2017-03-21 5 views
-2

Ich versuche, eine TXT-Datei Zeile für Zeile zu lesen, in der jede Zeile zwei Wörter und zwei Ganzzahlen hat.Lesen von einer Datei in C Zeile für Zeile

Zeit eine Schleife mit fscanf Ich laufe aber ich versuche, die Werte und keine Druckausgabe zu drucken:

while{fscanf(filename,"%s %s %d %d", first,second,&num1,&num2) == 1) 
{ 
     printf("%s %s %d %d", first,second,num1,num2); 
} 

Die Datei wird geöffnet richtig ich, dass überprüft, so dass das Problem ist, dass die Werte nicht werden richtig eingelesen. Ist fscanf() die Funktion, die ich verwenden soll? Wenn nicht, habe ich vielleicht fgets() gehört, aber ich weiß nicht, wie das funktionieren würde, wenn ich zwei Saiten und zwei Ints hätte. Jede Hilfe wäre willkommen.

+3

Bitte lesen Sie die Handbuchseite für 'fscanf', um den korrekten Rückgabewert zum Vergleich mit –

+1

herauszufinden Verwenden Sie' fgets', um die ganze Zeile zu lesen. Dann scanne mit 'sscanf' oder/und' strtol'. – i486

+0

danke für den Rat, das ist mein erstes Semester in der Programmierung und war mir nicht bewusst, dass es ein Handbuch haha ​​war. Das Problem wurde gelöst, indem fscanf == 1 in fscanf == 4 geändert wurde, da 4 Variablen gefunden wurden –

Antwort

1

ersetzen

while{fscanf(filename,"%s %s %d %d", first,second,&num1,&num2) == 1)

mit

while(fscanf(filename,"%s %s %d %d", first,second,&num1,&num2) == 4)

1

Der Rückgabewert von fscanf ist die Anzahl der Elemente in gelesen so in Ihrem Fall die Funktion 4 zurückgibt und gleich nie 1 so Der Körper der Schleife wird nicht ausgeführt.