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;
}
Я пытаюсь сохранить каждый токен в значениях в массиве struct.C: strtok переопределяет предыдущие значения массива?
Я чтение из файла в следующем формате
номер Фамилия Имя Фамилия Имя номер и т.д ..
Мой выход следующим образом:
0 Pratt Elyn 193) 760-4405
1 Pratt Evelyn
2 Пратт velyn
3 Pratt velyn (193)760-4405
4 Pratt velyn 93) 760-4405
5 Pratt (193)760-4405
6 Пратт Elyn 3) 760-4405
и т.д ...
выход должен быть,
0 Акоста Надин (752)596-6540
1 Олфорд Скайлер (635)736-7827
2 Эллисон Лоуренс (475)886-5725
3 Альварес Колин (659) 911- 6629
4 шарика Cadman (328)898-9532
5 Ballard Абель (853)190-0868
. ..
99 Pratt Эвелин (193)760-4405
Как вы можете видеть, Pratt Эвелин (193)760-4405 последняя строка файла Читаю с,
Я m довольно новичок в C, и любое объяснение относительно того, что происходит неправильно, будет оценено!
Можем ли мы определить определение 'card'? Проблема в том, что вы назначаете указатели вместо копирования строк. – mukunda
Вы должны использовать 'strcpy()' для копирования строк (и убедитесь, что для копирования строк достаточно места); вы не можете просто назначить указатели. Или вы можете использовать 'strdup()' для дублирования строки. Вы должны проверить, что вы не получите NULL обратно из 'strtok()', потому что ввод также неправильно отформатирован. –
Эти люди и цифры настоящие? Если это так, вы обязательно должны удалить их здесь. – alk