突然fgets停止工作,而我还没有做任何会影响功能的改变 这是我的代码。请告诉我为什么它不起作用!
void readInfo()
{struct grades *grades=malloc(3*sizeof(grades));
char line[60],str[6];
int i=0;
FILE *rf=fopen("Grades.txt","r");
if(!feof(rf)&&fgets(line,60,rf)!=NULL)
{ puts("inside if1");
while(i<3)
{
sscanf(line,"%d %s %c",&(grades[i]).ID,str,&(grades[i].grade));
strcpy(str,((*(grades+i)).course));
i++;
printInfo(grades+i);puts("herwr");
}
}
fclose(rf);
}
********* CODE EDITED
答案 0 :(得分:1)
这里重写了您的代码:
未编译,更少测试。
void readInfo(void)
{
int i = 0;
FILE *rf = fopen("Grades.txt", "r");
if (rf != NULL)
{
char line[1024];
while (fgets(line, sizeof(line), rf) != NULL)
{
struct grades grade;
puts("inside while");
if (sscanf(line, "%d %s %c", &grade.ID, grade.course, &grade.grade) == 3)
{
i++;
printInfo(&grade);
}
}
puts("here");
fclose(rf);
}
printf("%d grades accepted\n", i);
}
更改包括:
free()
没问题。sscanf()
是否成功。其他可能性:
所有这些都需要对编码进行一些更改,但没有什么非常复杂的。