所以我想创建一个简单的程序,打开一个文本文件,读取文件包含的学生数,他们的名字,姓氏和学号,并在变量中存储值,然后最后返回一个指向这些学生对象数组的指针。我的代码如下: -
#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;
}
问题是,当我运行程序时,我收到一条错误,指出子脚本值既不是数组也不是指针。我对这个概念有点新意,所以我有点不明白这意味着什么。如果有人能告诉我我做错了什么,以及如何达到我想要的结果,我会非常满满的。谢谢。
答案 0 :(得分:2)
在你的程序中a
既不是数组也不是指针。它是struct student
类型。您应该将a
声明为struct
的数组。
struct student a[SIZE];
答案 1 :(得分:1)
a[i].firstName
这是数组符号。
a.firstName
这是可变符号。
struct student a;
这就是你拥有的。这是一个变量。
struct student a[LEN];
这就是你需要的。这是一个数组。