card * load_rolodex(FILE *read_file)
{
int array_index = 0;
char line [LINE_MAX];
card *card_array = malloc(sizeof(card) * upper_bound);
while (fgets(line, LINE_MAX, read_file)!= NULL)
{
card_array[array_index].last_name = strtok(line, " ");
card_array[array_index].first_name = strtok(NULL, " ");
card_array[array_index].phone_number = strtok(NULL, " ");
size++;
array_index++;
}
return card_array;
}
Я пытаюсь сохранить каждый токен в значения в массиве структур.
Я читаю из файла следующего формата
фамилия имя номер фамилия имя номер и т.д..
Мой вывод выглядит следующим образом:
0 Праттэлин 193)760-4405
1 Пратт Эвелин
2 Пратт Велин
3 Пратт Велин (193)760-4405
4 Пратт Велин 93)760-4405
5 Пратт (193)760-4405
6 Праттэлин 3)760-4405
и т.д...
Вывод должен быть
0 Акоста Надин (752)596-6540
1 Алфорд Скайлер (635)736-7827
2 Эллисон Лоуренс (475)886-5725
3 Альварес Колин (659)911-6629
4 Мяч Кэдман (328)898-9532
5 Баллард Абель (853)190-0868
...
99 Пратт Эвелин (193)760-4405
Как видите, Pratt Evelyn (193)760-4405 — это последняя строка файла, из которого я читаю,
Я довольно новичок в C, и любое объяснение того, что происходит не так, будет оценено!
card
? Проблема в том, что вы назначаете указатели вместо копирования строк. - person mukunda   schedule 03.12.2014strcpy()
для копирования строк (и убедиться, что для копирования строк достаточно места); вы не можете просто назначать указатели. Или вы можете использоватьstrdup()
для дублирования строки. Вы должны убедиться, что вы не получаете NULL обратно изstrtok()
, потому что ввод также неправильно отформатирован. - person Jonathan Leffler   schedule 03.12.2014