2013-12-02 2 views
0

Итак, я пытаюсь создать простую программу, которая открывает текстовый файл, читает количество студентов, в которых находится файл, их имена, фамилии и номера учеников, а также магазины значения в переменных, а затем, наконец, возвращает указатель на массив этих объектов-учеников. Мой код выглядит следующим образом: -Подстрочное значение не является ни массивом, ни указателем

#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

numOfStudents уже int *. Строка должна быть fscanf (fp, "% d", numOfStudents); – brunch875

ответ

2

В вашей программе a не является ни массивом, ни указателем. Он имеет тип struct student. Вы должны объявить a как массив struct.

struct student a[SIZE]; 
1
a[i].firstName 

Это обозначение массива.

a.firstName 

Это переменная нотация.

struct student a; 

Это то, что у вас есть. Это переменная.

struct student a[LEN]; 

Это то, что вам нужно. Это массив.

Смежные вопросы

 Смежные вопросы