2

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

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

每当我执行此操作时,它都会陷入无限循环。我无法理解当文件只有几行长时会发生这种情况。

新手。

4

2 回答 2

7

在返回零时循环feof几乎是正确的。

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

int ch;
while ((ch = getc(fp)) != EOF)
    putc(ch, stdout);

这使用 读取一个字符getc,通过将字符与 进行比较来检查读取是否成功EOF,如果不是,EOF则继续循环。

此外,打开文件后立即调用也没有用rewind,文件已经“倒带”了。

于 2014-03-11T20:03:22.893 回答
0

使用以下程序作为答案fgetc()。使用从文件中获取字符并使用printf()函数将字符打印到屏幕。

#include<stdio.h>
#include<conio.h>
main()
{
    FILE *fp;
    char c;
    clrscr();
    fp=fopen("new.txt","r+");
    c=fgetc(fp);
    while(c!=EOF)
    {
        printf("%c",c);
        c=fgetc(fp);
    }
    getch();
}
于 2014-03-13T09:26:18.937 回答