C liest durch Leerzeichen getrennte Werte aus der Datei
Ich muss Text aus einer Datei lesen und einer Struktur Werte zuweisen, die auf den gelesenen Informationen basieren.
Hier ist das Format der Textdatei:
First Middle Last Address city state zip age sex tenure salary
\--------------------------------------------------------------
ADA A AGUSTA 33 BABBAGE ROAD LOVELACE GB 19569 28 F 2 350.50
ISSAC A ASIMOV 99 FICTION WAY AMHERST MA 63948 58 M 6 423.88
HUMPHRY R BOGART 71 SAM STREET HOLLYWOOD CA 48482 56 M 5 366.00
Und die Struktur, in die ich es einlesen muss:
typedef struct
{
char first[8], initial, last[10],
street[17], city[12], state[3];
int age, tenure, zip;
float salary;
char sex;
}Employee;
Der Code, den ich bisher verwendet habe, war:
void inputLine(Employee* e)
{
fscanf(pay, "%s %s %s %s %s %s %s %s %d %d %s %d %f",
e->first, &e->initial, e->last, e->street,
e->street, e->city, e->city, e->state,
&e->zip, &e->age, &e->sex, &e->tenure,
&e->salary);
}
Aber wenn ich jede Zeile drucke, sind die ersten Zeilen in Ordnung, dann kommt es zu Problemen:
TED L KOPPEL ABC WASHINGTON DC 37376 48 M 9 909.44
DAVID T LETTERMAN WNBC NEW YORK 0 0
NY 1 47 5 STEVIE R 0 0
NICKS 3 MUSIC CHICAGO 23459 38 0 0
F 8 460.88 P 76 SILLY 0 89
STREET L GB 44 2 320.50 0 12341
Ich habe auch versucht:
void inputLine(Employee* e)
{
char line[53];
fgets(line, 52, pay);
printf("%s\n", line);
fflush(stdout);
sscanf(line, "%s %s %s %s %s %s %s %s %d %d %s %d %f",
e->first, &e->initial, e->last, e->street,
e->street, e->city, e->city, e->state,
&e->zip, &e->age, &e->sex, &e->tenure,
&e->salary);
}
Aber das ergibt das gleiche Ergebnis.
Der Code kann nicht in C ++ sein. Ich verwende den Linux GNU GCC 4.8.1-Compiler, aber ich habe dies auch auf dem Mac-Compiler getestet und es hat nicht funktioniert.