#c
#c
Вопрос:
struct reviewStruct {
char reviewer[50];
int feedback[3];
};
int readReviews(FILE *file, struct reviewStruct reviews[10]) {
int i;
file = fopen("reviews.txt", "r");
if (file == NULL) {
printf("Error");
exit(-1);
}
for(i = 0; i < 10; i ) {
fgets(reviews[i], 50, file);
}
return 0;
fclose(file);
for(i = 0; i < 10; i ) {
printf("%s", reviews[i]);
}
}
Я пытаюсь заполнить «struct reviewStruct reviews[10]» информацией из текстового файла под названием «reviews.txt » Я продолжаю получать сообщение об ошибке: «ошибка: несовместимый тип для аргумента 1 «fgets»» Я не уверен, как это исправить, вывод должен быть в форме n n и так далее… Как мне это сделать?
Ответ №1:
fgets(reviews[i], 50, file);
->fgets(reviews[i].reviewer, 50, file);
printf("%s", reviews[i]);
->printf("%s", reviews[i].reviewer);
Ответ №2:
Объявление struct reviewStruct reviews[10]
в readReviews
объявлении функции создает массив структур. в этом вызове: fgets(reviews[i], 50, file);
вы передаете определенную структуру, в fgets()
которую ожидается передача строки. На самом деле, вы хотите передать определенный элемент структуры. Используйте оператор dot ( .
) для доступа struct
к элементу ‘s. Я предполагаю, что вы хотите, чтобы ваш код выглядел следующим образом:
struct reviewStruct {
char reviewer[50];
int feedback[3];
};
int readReviews(FILE *file, struct reviewStruct reviews[10]) {
int i;
file = fopen("reviews.txt", "r");
if (file == NULL) {
printf("Error");
exit(-1);
}
for(i = 0; i < 10; i ) {
fgets(reviews[i].reviewer, 50, file);
}
return 0;
fclose(file);
for(i = 0; i < 10; i ) {
printf("%s", reviews[i].reviewer);
}
}
Я просто заменил reviews[i]
на reviews[i].reviewer
, чтобы передать reviewer
строку функциям, а не всей структуре.