为什么下面的程序没有按预期打印新创建的文本文件( "E" )的第一个字符?这是一个简单的程序,我试图从各个方面来看问题,但找不到原因。文本文件正在我的 D 驱动器上创建,内容为“ EFGHI ”,但由于某种原因,即使我使用 getc() 倒带和阅读,也不会读取 “E” 并且输出为 -1

#include<stdio.h>
#include<stdlib.h>

int main()
{
    int x;
    FILE *fp;
    fp=fopen("F:\\demo.txt","w");
    if(fp==NULL)
        puts("Write error");
    fputs("EFGHI",fp);
    rewind(fp);

    x=getc(fp);
    printf("%d",x);
    fclose(fp);
}

更新:
    #include<stdio.h>
    #include<stdlib.h>

    int main()
    {
        int x;
        FILE *fp;
        fp=fopen("F:\\demo.txt","w+");
        if(fp==NULL)
        {
            puts("Write error");
            exit(EXIT_SUCCESS);
        }
        fputs("EFGHI",fp);
        rewind(fp);

        while(!feof(fp))
        {
            x=getc(fp);
            printf("%d\n",x);
        }
        fclose(fp);
     }

最佳答案

文件模式 "w" 打开文件仅用于写入。

使用 "w+" 打开文件进行读写。

(有关更多文件模式,请参阅 man fopen 。)

关于 getc() 返回 -1 ,从 man getc 逐字逐句:


EOF 通常等于 -1 。为了测试这个做一个 printf("EOF=%d\n", EOF);

10-08 18:41