Мне нужно отсканировать 3 строки и целое число из уже существующего файла и сохранить каждую из них как элемент в массиве структур. Файл отформатирован так:
строка1 строка2 целое число строка3
строка1 строка2 целое число строка3
... и т. Д.
при поиске для них он правильно сканирует string1, integer и string3. Тем не менее, строка2 всегда создает ошибку при сканировании, и когда любая из строк2 печатается, они либо обрезаются, либо имеют какой-то нечетный символ ASCII, например, знак вопроса в поле; он также иногда запускает системный «колокольный» звук.
Я проверил сбор строк через fscanf для каждого отдельного, и это только второй случайный сбой.
Урезанная версия моего кода, освещающая проблему
struct carinfo
{
char name[10];
char make[15];
int number;
char color[10];
}car[4];
filepointer = fopen("file.txt", "r");
while(!feof(filepointer))
{
for(i=0;i<4;i++)
{
fscanf(filepointer, "%s %s %d %s", &car[i].name[10],
&car[i].make[15], &car[i].number, &car[i].color[10]);
printf("%s\n", &car[i].make[15]);
}
}
мой ожидаемый результат заключается в том, что вторая строка будет сканироваться правильно и полностью сохраняться в своем элементе в массиве структур; вместо этого значение обычно обрезается (около 2-3 символов вместо 15) и содержит странные символы ASCII.