我试图从文件中读取每个字符,然后单独使用getc和putc将其打印到屏幕上。这是我的代码,
FILE *fp = fopen("new.txt","r+");
rewind(fp);
while( feof(fp) == 0 )
{
putc( getc(fp) , stdout);
}
当我执行此操作时,它会遇到无限循环。我不能理解当文件只有几行时会发生这种情况。
新手。
答案 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();
}