все.Ошибка сегментации при сканировании данных из файла
После чтения ошибок сегментации я все еще не могу понять, откуда это происходит. Я знаю, что это исходит из этой конкретной функции; все остальное в моей программе драйверов работает.
Стоит отметить, что все стили перечислены типа данных, StyleT.
функция вызывается:
openList(&list, "List.txt");
описание функции:
void openList(VehicleListT *list, char *infilename)
{
FILE *infile;
int i = 0;
char styleString[20];
newList(list);
if((infile = fopen(infilename, "r")) == NULL)
{
fprintf(stderr, "ERROR: Cannot open source file!\n");
exit(1);
}
fscanf(infile, "%s\n", list->vehicles[i].vin);
while(!feof(infile))
{
fscanf(infile, "%i\n", list->vehicles[i].year);
fscanf(infile, "%lf\n", list->vehicles[i].price);
fscanf(infile, "%s\n", list->vehicles[i].make);
fscanf(infile, "%s\n", styleString);
if((strcmp(styleString, "TWO_DOOR")) == 0)
{
list->vehicles[i].style = TWO_DOOR;
}
if((strcmp(styleString, "FOUR_DOOR")) == 0)
{
list->vehicles[i].style = FOUR_DOOR;
}
if((strcmp(styleString, "CONVERTIBLE")) == 0)
{
list->vehicles[i].style = CONVERTIBLE;
}
if((strcmp(styleString, "TRUCK")) == 0)
{
list->vehicles[i].style = TRUCK;
}
if((strcmp(styleString, "SUV")) == 0)
{
list->vehicles[i].style = SUV;
}
fscanf(infile, "%s\n", list->vehicles[i].color);
fscanf(infile, "%s\n", list->vehicles[i].vin);
i++;
list->count++;
}
fclose(infile);
return;
}
Как вы знаете, что в вашем списке автомобилей достаточно памяти для хранения количества записей, которые вы читаете? – Jason
Максимальный предел установлен в 20 в файле .h, и в моей тестовой программе я сделал только 4 записи, которые были сохранены в файле «List.txt», который является файлом, который открывает эта функция. – Waterbagel
Запустите его через отладчик и узнайте строку, где это происходит. –