首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >getc(fp)引发问题

getc(fp)引发问题
EN

Stack Overflow用户
提问于 2012-02-21 21:01:40
回答 4查看 456关注 0票数 0

这是我的代码。

代码语言:javascript
复制
#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上停止它?还有这个角色是什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-02-21 21:25:54

除了其他答案中的方法外,您还可以这样做:

代码语言:javascript
复制
while ((a = fgetc(fp)) != EOF)
{
    printf("%d\n", a);
}

现在,您有了一些替代解决方案。:)

编辑: As R..所以提醒我们,您还必须将a的类型更改为int

票数 2
EN

Stack Overflow用户

发布于 2012-02-21 21:05:01

您正在打印EOF字符( -1),因为您没有检查在fgetc()之后是否立即遇到了EOF。将循环的结构更改为:

代码语言:javascript
复制
int a; /* not char, as pointed out by R... */

for (;;)
{
    a = fgetc(fp);
    if (EOF == a) break;
    printf("\n%d", a):
}
票数 2
EN

Stack Overflow用户

发布于 2012-02-21 22:00:43

您需要使a具有int类型,因为该类型是fgetc()的返回类型,并且是正确表示EOF所必需的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9378073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档