我正在做的基本上是我正在读取文件,将其保存到数组中,并尝试打印它。但是我的代码似乎有什么问题?
#include<stdio.h>
#include<string.h>
typedef struct{
int studentNumber; //struct declaration
char name[31];
float quizzes[8];
float exams[3];
float overallGrade;
float standing;
}Student;
//function for transferring
void transfer(Student myList[]){
int x=0;
for (x=0; x<3;x++){
printf("%d\n",myList[x].studentNumber);
printf("%d\n",myList[x].quizzes);
printf("%d\n",myList[x].exams);
}
}
int main(){
FILE *read = NULL; //creates a stream
Student myList[50];
int ctr=0;
char buf[128];
read = fopen("file.txt", "r"); //opens the file
if(read==NULL)
printf("FILE NOT FOUND!");
else{
while(!feof(read)){
fgets(buf, sizeof(buf), read); //reads first line
sscanf(buf, "%d,", myList[0].studentNumber);
fgets(buf, sizeof(buf), read); //reads second Line
sscanf(buf, "%d,%d,%d,%d,%d,%d,%d,%d", &myList[ctr].quizzes[0],&myList[ctr].quizzes[1],&myList[ctr].quizzes[2],&myList[ctr].quizzes[3],&myList[ctr].quizzes[4],&myList[ctr].quizzes[5],&myList[ctr].quizzes[6],&myList[ctr].quizzes[7]);
fgets(buf, sizeof(buf), read); //reads third Line
sscanf(buf, "%d,%d,%d", &myList[ctr].exams[0], &myList[ctr].exams[1],&myList[ctr].exams[2]);
ctr++;
}
}
fclose(read);
transfer(myList);
return 0;
}
该文件由三个主线组成。首先是学生编号,第二个是测验,第三行是考试。该文件如下所示:
1234567
12,16,14,9,8,15,0,3
40,40,40
1237890
13,12,18,11,7,15,10,8
40,35,50
1232098
10,11,15,10,0,15,6,7
36,42,40
答案 0 :(得分:0)
我不记得哪个旧的编译器能够在没有原型的情况下运行函数。但我会请你使用:
void transfer(Student *);
并且还改变:
void transfer(Student myList[]);
要
void transfer(Student *myList)
另外,while中的第一个sscanf应该是:
sscanf(buf, "%d,", &myList[ctr].studentNumber);
您使用0而不是ctr。
修改强> 除了使用的代码或格式之外,请不要评论问题。