C читать разделенные пробелом значения из файла
Мне нужно прочитать текст из файла и назначить значения для структуры на основе прочитанной информации.
Вот формат текстового файла:
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
И структура, которую я должен прочитать это в:
typedef struct
{
char first[8], initial, last[10],
street[17], city[12], state[3];
int age, tenure, zip;
float salary;
char sex;
}Employee;
Код, который я использовал до сих пор:
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);
}
Но когда я печатаю каждую строку, первые несколько строк в порядке, а затем все начинает портиться:
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
Я также попробовал:
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);
}
Но это дает тот же результат.
Код не может быть в C ++. Я использую компилятор Linux GNU GCC 4.8.1, но я также проверил это на компиляторе Mac, и он не работал.