Я работаю над некоторой домашней работой для введения в класс C, в котором мы должны написать программу, которая читает ввод из текстового файла, который содержит информацию о заказе с винного завода. У меня все выписано, но когда я запускаю его, единственное, что печатает правильно, это «Winery # 1:», а затем ошибки окна. Я пытался напечатать одну из моих массивов в конце программы, чтобы увидеть, что проблема была, и затем я получил сообщение об ошибке, что говорится:C: Подстрочное значение не является ни массивом, ни указателем
|54|error: subscripted value is neither array nor pointer|
Я понимаю, что означает, что ошибка, хотя я не уверен, что мне нужно сделать, чтобы исправить это. Я считаю, что я правильно объявил свои массивы и т. Д., Но я все еще получаю ошибку. Это код, у меня есть:
int main() {
//Creates the file pointer and variables
FILE *ifp;
int index, index2, index3, index4;
int wineries, num_bottles, orders, prices, sum_order, total_orders;
//Opens the file to be read from.
ifp = fopen ("wine.txt", "r");
//Scans the first line of the file to find out how many wineries there are,
//thus finding out how many times the loop must be repeated.
fscanf(ifp, "%d", &wineries);
//Begins the main loop which will have repititions equal to the number of wineries.
for (index = 0; index < wineries; index ++) {
//Prints the winery number
printf("Winery #%d:\n", index + 1);
//Scans the number of bottles at the aforementioned winery and
//creates the array "prices" which is size "num_bottles."
fscanf(ifp,"%d", num_bottles);
int prices[num_bottles];
//Scans the bottle prices into the array
for (index2 = 0; index2 < num_bottles; index2++)
fscanf(ifp, "%d", &prices[index2]);
//Creates variable orders to scan line 4 into.
fscanf(ifp, "%d", &orders);
for(index3 = 0; index3 < orders; index3++){
int sum_order = 0;
for(index4 = 0; index4 < num_bottles; index4++)
fscanf(ifp, "%d", &total_orders);
sum_order += (prices[index4] * total_orders);
printf("Order #%d: $%d\n", index3+1, sum_order);
}
}
printf("%d", prices[index2]);
fclose(ifp);
return 0;
}
Я смотрел на некоторые другие ответы на этом сайте, но ни один из них не казалось, чтобы помочь мне с моей проблемой. Я чувствую тонущее чувство, что ответ смотрит мне в лицо, но, будучи усталым любительским кодером, я не смог его найти. Заранее спасибо!
Что такое линия 54? –
'prices' не объявлен как массив, и ни один из них не является« заказом » – GWW
Поскольку вы называете себя любителем, некоторые советы по кодированию: во-первых, я хочу, чтобы код каждого был ясен и хорошо прокомментирован! Вы обнаружите, что комментарии наиболее полезны, когда они описывают ваши рассуждения, а не сам код. Можно с уверенностью предположить, что любой, кто читает ваш код, понимает язык; то, что они не могут сделать, это ваши мысли. Также неплохо документировать ваши предположения и ожидания, например: «Мы попадаем сюда, только если у нас закончилось вино». –