这是我的代码。
#include<stdlib.h>
#include<stdio.h>
int main(int argc,char** argv)
{
char a;
a=9;
FILE * fp;
fp=fopen(argv[1],"r");
while(a!= EOF)
{
a=fgetc(fp);
printf("\n%d",a);
}
}它的输出是正确的,但是在最后我得到了一个奇怪的字符-1 (因为我打印的是整数值。
如何仅在EOF上停止它?还有这个角色是什么?
发布于 2012-02-21 21:25:54
除了其他答案中的方法外,您还可以这样做:
while ((a = fgetc(fp)) != EOF)
{
printf("%d\n", a);
}现在,您有了一些替代解决方案。:)
编辑: As R..所以提醒我们,您还必须将a的类型更改为int。
发布于 2012-02-21 21:05:01
您正在打印EOF字符( -1),因为您没有检查在fgetc()之后是否立即遇到了EOF。将循环的结构更改为:
int a; /* not char, as pointed out by R... */
for (;;)
{
a = fgetc(fp);
if (EOF == a) break;
printf("\n%d", a):
}发布于 2012-02-21 22:00:43
您需要使a具有int类型,因为该类型是fgetc()的返回类型,并且是正确表示EOF所必需的。
https://stackoverflow.com/questions/9378073
复制相似问题