Итак, я пытаюсь создать простую программу, которая открывает текстовый файл, читает количество студентов, в которых находится файл, их имена, фамилии и номера учеников, а также магазины значения в переменных, а затем, наконец, возвращает указатель на массив этих объектов-учеников. Мой код выглядит следующим образом: -Подстрочное значение не является ни массивом, ни указателем
#include <stdio.h>
#include <stdlib.h>
struct student
{
double studentNumber;
char *firstName;
char *lastName;
};
struct student *readStudentRecordFile(char *fileName, int *numOfStudents)
{
int i;
struct student a;
FILE *fp;
fp=fopen(fileName,"r");
fscanf(fp,"%d",&numOfStudents);
for(i=0;i<*numOfStudents;i++)
{
fscanf(fp, "%s" "%s" "%f", a[i].firstName,a[i].lastName,&a[i].studentNumber);
}
fclose(fp);
}
int main(void)
{
int nStudents;
struct student *readArray;
readArray=readStudentRecordFile("hello.txt", &nStudents);
return 0;
}
Проблема заключается в том, что, когда я запускаю программу, я получаю сообщение об ошибке с указанием суб сценария значение не является ни массивом, ни указатель. Я вроде как новичок в этой концепции, поэтому я вроде не понимаю, что это значит. Если кто-нибудь скажет мне, что я делаю неправильно, и как я могу достичь результата, который я хочу, я буду очень доволен. Спасибо.
numOfStudents уже int *. Строка должна быть fscanf (fp, "% d", numOfStudents); – brunch875