我正在尝试从文件中读取每个字符并单独使用 getc 和 putc 将其打印到屏幕上。这是我的代码,
FILE *fp = fopen("new.txt","r+");
rewind(fp);
while( feof(fp) == 0 )
{
putc( getc(fp) , stdout);
}
每当我执行此操作时,它都会陷入无限循环。我无法理解当文件只有几行长时会发生这种情况。
新手。
在返回零时循环feof
几乎是不正确的。
相反,您可能希望从输入中读取并检查输入函数在一个表达式中没有失败:
int ch;
while ((ch = getc(fp)) != EOF)
putc(ch, stdout);
这使用 读取一个字符getc
,通过将字符与 进行比较来检查读取是否成功EOF
,如果不是,EOF
则继续循环。
此外,打开文件后立即调用也没有用rewind
,文件已经“倒带”了。
使用以下程序作为答案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();
}