子脚本值既不是数组也不是指针

时间:2013-12-02 18:47:44

标签: c pointers file-io struct

所以我想创建一个简单的程序,打开一个文本文件,读取文件包含的学生数,他们的名字,姓氏和学号,并在变量中存储值,然后最后返回一个指向这些学生对象数组的指针。我的代码如下: -

#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;

}

问题是,当我运行程序时,我收到一条错误,指出子脚本值既不是数组也不是指针。我对这个概念有点新意,所以我有点不明白这意味着什么。如果有人能告诉我我做错了什么,以及如何达到我想要的结果,我会非常满满的。谢谢。

2 个答案:

答案 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];

这就是你需要的。这是一个数组。