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

时间:2014-03-11 19:54:44

标签: c file file-io getc

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

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

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

新手。

2 个答案:

答案 0 :(得分:7)

feof返回零时循环几乎从不正确。

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

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

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

此外,在打开文件后立即调用rewind没有用,文件已经&#34;重绕&#34;。

答案 1 :(得分: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();
}