首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EOF已达到before...EOF

EOF已达到before...EOF
EN

Stack Overflow用户
提问于 2017-05-22 17:54:02
回答 1查看 435关注 0票数 0

我正在做一个非常简单的家庭作业,需要我输出一个文件的内容,但我在做任何事情之前意外地到达了EOF。这个文件只包含单词"pig“,由于某种原因,EOF返回16。我使用的是Dev-Cpp,程序是用C语言编写的。

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>
int main()
{
    FILE *fp;
    fp=fopen("C:/Users/myusername/Desktop/numeri.txt", "r");
    char c;
    if (fp!=NULL)
    {
        printf ("File opened correctly.\n");
        c=fgetc(fp);
        printf("%d\n", feof(fp)); //FEOF EQUALS 16 FOR SOME REASON
        while (feof(fp)==0)
        {
            putchar(c);
            c=fgetc(fp);
        }
        fclose(fp);
        system("PAUSE");
        return 0;
    }
    else
    {
        printf ("File cannot be opened.\n");
        system("PAUSE");
        exit(1);
    }
    system("PAUSE");
}
EN

回答 1

Stack Overflow用户

发布于 2017-05-22 23:39:29

根据feof()的手册页

函数feof()测试文件结束指示符

代码语言:javascript
复制
 for the stream pointed to by stream,      _returning nonzero if it is set_.

因此,唯一的期望是返回值为0或非零。

因此,值16没有任何问题

以下是代码的建议版本:

  1. it干净利落地编译
  2. 它执行所需的函数
  3. 它实现了对do...while的注释,并且通过用一个空行分隔代码块(for、if、else、while、

、、do...while、switch、case、default)来增强理解。

现在是代码

代码语言:javascript
复制
#include <stdio.h>   // fopen(), printf(), perror(). fclose(), fgetc()
#include <stdlib.h>  // exit(), EXIT_FAILURE

int main( void )
{
    FILE *fp = fopen("big.txt", "r");

    if (fp!=NULL)
    {
        printf ("File opened correctly.\n");

        int c=fgetc(fp);

        while (EOF != c)
        {
            putchar(c);
            c=fgetc(fp);
        }

        fclose(fp);
        return 0;
    }

    else
    {
        perror ("File cannot be opened.\n");
        exit( EXIT_FAILURE );
    }
}

注意:文件:big.txt仅包含big

以下是结果输出:

代码语言:javascript
复制
File opened correctly.
big
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44109894

复制
相关文章

相似问题

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