【发布时间】:2016-08-17 20:56:03
【问题描述】:
FILE *fp;
char name[50];
fp=fopen("stu.txt","r");
while(fgets(name,50,fp)!=NULL)
{
printf(" %s",name);
fgets(name,50,fp);
}
fclose(fp);
在我的文件中,4 个不同的行中有 4 个名称,但输出只显示第一个和第三个名称。有什么问题?我知道这是非常基本的,但这占用了我很多时间。
【问题讨论】:
-
删除第二个
fgets(name,50,fp); -
while循环条件没有指定任何会导致循环在主体内发生时终止的条件——它是在每个(潜在的)循环传递之前实际评估的表达式以决定是否执行循环体(如果结果非零则发生)。将fgets()放入循环条件中将在每个循环通过之前检查条件时调用它......并且循环体内的fgets()独立于它(您的循环仅在条件中的fgets()调用时结束返回NULL,但不是循环体中的那个)。