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.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage