Ich bin in einer Textdatei wie folgt aus fscanf:fscanf liest eine zweimal Linie
T 1 1000
T 2 700
N 3 450
Y 4 200
Ich versuche, um die Linien zu zählen ein malloc zu verwenden und zu tun, dass ich benutze:
Prize temp;
int count =0;
while ((fscanf(fa,"%c %d %f", &temp.A, &temp.B, &temp.C))!= EOF)
count ++;
wo Preis ist eine Struktur:
typedef struct {
char A;
int B;
float C;
} Prize;
So, nachdem die Linien das Programm liest druckt mir dies:
A: T B: 1 C: 1000.0000
A: B: 0 C: 0.0000
A: T B: 2 C: 700.0000
A: B: 0 C: 0.0000
A: N B: 3 C: 450.0000
A: B: 0 C: 0.0000
A: Y B: 4 C: 200.0000
Verwenden des Debuggers ich bemerkt, dass fscanf
(zum Beispiel, während die erste Zeile lesen) erhält:
A = 84 'T', B = 1, C = 1000
und anstelle des Lesens In der zweiten Zeile liest es eine weitere erste Zeile, aber wie folgt aus:
A = 10 '\ n', B = 1, C = 1000
und weiterhin für jede Zeile tun dies aber die letzte.
Ich kontrollierte die Datei und es hat keine zusätzlichen Leerzeichen oder Zeilen.
Irgendwelche Vorschläge, um das Problem zu lösen?
'fscanf (fa, "% c% d% f", ...)' ' – melpomene
fscanf (fa, "% c% d% f", & temp.A, & Temp.B, & Temp. C)) '->' fscanf (fa, "% c% d% f", & temp. A, & temp.B, & temp.C)) ' –
Außerdem ist'! = EOF' keine komplette Lösung, es muss auch '== 3' sein. –