27. april 2005 - 18:29
Der er
19 kommentarer og 1 løsning
Der læses kun ét ord fra min fil
Jeg har følgende som gerne skulle læse de ord der står i min test.txt fil så længe der er ord. #include <stdio.h> #include <stdlib.h> void getwords(){ FILE *ifp; ifp = fopen("test.txt", "r"); char *word; //*word er en pointer til char variabel while (fscanf(ifp, "%s", &word) == 1){ printf("%s\n", &word); } fclose(ifp); } int main(int argc, char *argv[]) { getwords(); system("PAUSE"); return 0; } Jeg får kun det første ord skrevet og så kommer der en windows fejl med at programmet er lukket. Hvad har jeg gjort galt ovenfor?
Annonceindlæg fra Computerworld
Gefion skaber fremtidens AI
Supercomputeren Gefion er Danmarks nye AI-kraftværk og skal sikre, at både forskning og virksomheder kan være med i den teknologiske front.
14. august 2025
27. april 2005 - 18:31
#1
Prøv og erstat: char *word; med: char word[100];
27. april 2005 - 18:31
#2
Og: printf("%s\n", &word); med: printf("%s\n", word);
27. april 2005 - 18:32
#3
Og: fscanf(ifp, "%s", &word) med: fscanf(ifp, "%s", word)
27. april 2005 - 18:32
#4
#include <stdio.h> #include <stdlib.h> void getwords(){ FILE *ifp; ifp = fopen("test.txt", "r"); char word[100]; while (fscanf(ifp, "%s", word) == 1){ printf("%s\n", word); } fclose(ifp); } int main(int argc, char *argv[]) { getwords(); system("PAUSE"); return 0; }
27. april 2005 - 18:35
#5
Det virker... Selvfølgelig! Hvis jeg nu vil have styr på de ord der står i filen, laver jeg så et array i filen som char kategori_type[]; kategori_type[1] = string_et; kategori_type[2] = string_to; kategori_type[3] = string_tre; kategori_type[4] = string_fire; og så selvfælgelig lige tilpasser printf så den udskriver de forskellige elementer?
27. april 2005 - 18:37
#6
Hvad med et 2 dim array. char kategori_type[10][100]; (så har du plads til 10 ord med maksimalt 99 tegn i hver)
28. april 2005 - 10:40
#7
Nu har jeg følgende i min eksterne fil char *kategori_type[3][100]; kategori_type[0][] = "stringet"; kategori_type[1][] = "stringto"; kategori_type[2][] = "stringtre"; kategori_type[3][] = "stringfire"; og jeg vil gerne have fat i disse værdier, hvert element. Jeg havde tænkt noget i stil med for (i = 0; i <= 3; i++){ fscanf(ifp, "%s", &kategori_type[i][hvad skal der stå her]); printf("%s\n", kategori_type); Jeg ved godt at jeg er gået tilbage til pointer, men det virker hvis jeg fjerner [][] i fscanf, men så skriver den de første strenge og ikke elementerne
28. april 2005 - 10:59
#8
char *kategori_type[3][100]; kategori_type[0][] = "stringet"; kategori_type[1][] = "stringto"; kategori_type[2][] = "stringtre"; kategori_type[3][] = "stringfire"; må skulle være char *kategori_type[4][100]; kategori_type[0][] = "stringet"; kategori_type[1][] = "stringto"; kategori_type[2][] = "stringtre"; kategori_type[3][] = "stringfire";
28. april 2005 - 11:00
#9
for (i = 0; i <= 3; i++){ fscanf(ifp, "%s", kategori_type[i]); printf("%s\n", kategori_type[i]); } bør virke
28. april 2005 - 11:04
#10
jeg får kun de fire første stringe char *kategori_type[4][100]; kategori_type[0][] =
28. april 2005 - 11:18
#11
Kan C godt forstå at det er et array der er i en ekstern fil eller forstår den ikke kun at det er en streng?
28. april 2005 - 11:19
#12
jeg er lost hvilken kode bruger du ? hvilket output får du ? hvilket output forventede du ?
28. april 2005 - 11:22
#13
Min C kode ser således ud: #include <stdio.h> #include <stdlib.h> void get_kategori(){ FILE *ifp; ifp = fopen("testarray.txt", "r"); //pointer til char char *kategori_type[3][100]; int i; for (i = 0; i <= 3; i++){ fscanf(ifp, "%s", &kategori_type[i]); printf("%s\n", kategori_type[i]); } fclose(ifp); } int main(int argc, char *argv[]) { get_kategori(); system("PAUSE"); return 0; } og i min eksterne .txt fil char *kategori_type[4][100]; kategori_type[0][] = "stringet"; kategori_type[1][] = "stringto"; kategori_type[2][] = "stringtre"; kategori_type[3][] = "stringfire"; Jeg får de fire første strenge, men vil gerne have de fire første elementer...
28. april 2005 - 12:16
#14
har du C kode i din .txt fil ?
28. april 2005 - 15:45
#15
din externe fil skulle vel kun indeholde: stringet stringto stringtre stringfire
28. april 2005 - 18:26
#16
Til arne v: Jep! Til Segmose: Jep, det var også det jeg tænkte! Jeg laver det lige på en anden måde. I smider bare et svar.
28. april 2005 - 18:47
#17
.
28. april 2005 - 22:15
#18
Jeg takker mange gange for hjælpen..
28. april 2005 - 23:14
#20
arne v: Jeg tænkte at du havde brugt mest tid på det egentlige 'start'-spørgsmål ;) Men det er naturligvis tak for hjælpen til jer begge.
Kurser inden for grundlæggende programmering