#include<stdio.h>
void main()
{
do
{
char i;
FILE *f,*q;
f=fopen("E:\\txt.txt","w");
while((i=getchar())!='\n')
{
fputc(i,f);
}
fclose(f);
q=fopen("E:\\txt.txt","r");
while((i=fgetc(q)!=EOF))
{
printf("%c",i);
}
} while(1);
}
它应输出从键盘按下的内容,但输出到我输入的相同字符长度的问题框。并且文本在那里我以正确的形式指定。以下是运行程序后的输出。
答案 0 :(得分:2)
此行中括号的放置是错误的:
while ((i = fgetc(q) != EOF)) {
由于运算符优先级(在C中,赋值运算符具有最低优先级),这相当于
while (i = (fgetc(q) != EOF));
换句话说,您每次都会将TRUE
分配给i
,直到您到达文件末尾。如果你将它显示为char
,你会得到一个有趣的不可打印的角色,所以你得到一系列有趣的角色,但长度正确。
应该是:
while ((i = fgetc(q)) != EOF) {
然后你应该得到你想要的输出。