使用getc从文件中读取并使用putc进行打印

kes*_*ari 1 c file-io file getc

我正在尝试从文件中读取每个字符,然后单独使用getc和putc将其打印到屏幕上.这是我的代码,

FILE *fp = fopen("new.txt","r+");
rewind(fp);
while( feof(fp) == 0 )
{
      putc( getc(fp) , stdout);
}
Run Code Online (Sandbox Code Playgroud)

当我执行此操作时,它会遇到无限循环.我无法理解当文件只有几行时会发生这种情况.

新手.

Som*_*ude 7

feof返回零时循环几乎永远不正确.

相反,您可能希望从输入中读取检查输入函数在一个表达式中没有失败:

int ch;
while ((ch = getc(fp)) != EOF)
    putc(ch, stdout);
Run Code Online (Sandbox Code Playgroud)

这会读取一个字符getc,通过比较字符来检查读取是否成功EOF,如果不是EOF则继续循环.

此外,rewind打开文件后立即调用没有用,文件已经"重绕"了.