用C显示监视器上文件的内容

时间:2013-05-13 17:59:04

标签: file fopen putchar

我正在尝试重新创建我在课堂上看到的程序。 老师制作了一个10行的文件,他告诉我们文件确实是创建的,然后他显示了它的内容。 我的代码由于某种原因不起作用,它只打印出“=”一百万次,然后退出。

我的代码:

void main()
{
    FILE* f1;
    char c;
    int i;
    f1=fopen("Essay 4.txt","w");
    for(i=0;i<10;i++)
        fprintf(f1," This essay deserves a 100!\n");
    do
    {
        c=getc(f1);
        putchar(c);
    }while(c!=EOF);
}

有什么问题?据我所见,我完全按照给出的例子做了。

1 个答案:

答案 0 :(得分:0)

流程是这样的:

  • 您创建一个文件(如果存在则将其重置为空文件)。这就是"w"模式的作用。
  • 然后你写东西。请注意,文件位置始终被视为最终,因为写入会移动文件位置。
  • 现在您尝试从最后读取。你读的第一件事就是EOF。实际上,当我在Mac上尝试你的程序时,我只会得到一个奇怪的角色,就像你正在使用do { } while一样。我建议你做一些类似的事情:for (c = getc(f1); c != EOF; c = getc(f1)) { putchar(c) }或类似的循环。
  • 但是,你的阅读也应该失败,因为文件模式是"w"(只写)而不是"w+"

所以你需要做两件事:

  • 使用文件模式"w+"
  • 写入文件后,将文件位置重置为文件的开头:fseek(f1, 0, SEEK_SET);