我有以下 C 程序:
#include <stdio.h>
int main()
{
FILE *f1, *f2, *f3;
int number, i;
printf("Contents of data file\n\n");
f1=fopen("DATA", "w");
for(i=1; i<=10; i++)
{
scanf("%d", &number);
if(number==-1)
{
break;
}
putw(number,f1);
}
fclose(f1);
f1=fopen("DATA","r");
f2=fopen("ODD","w");
f3=fopen("EVEN","w");
while((number==getw(f1)) != EOF)
{
if(number%2==0)
{
putw(number,f3);
}
else
{
putw(number,f2);
}
}
fclose(f1);
fclose(f2);
fclose(f3);
f2=fopen("ODD","r");
f2=fopen("EVEN","r");
printf("Contents on ODD file:");
while((number=getw(f2)) != EOF)
{
printf("%4d", number);
}
printf("Contents on EVEN file:");
while((number=getw(f3)) != EOF)
{
printf("%4d", number);
}
fclose(f2);
fclose(f3);
return 0;
}
该程序正在无限地获取FILE f1的输入。按-1后,它应该被终止。但事实并非如此!我已按下 CTRL+D
。但什么也没发生。我不明白问题出在哪里。
最佳答案
也许问题在于您对 scanf()
的调用将拒绝任何无法解释为整数的内容,并将其保留在输入缓冲区中。下次调用 scanf()
时,非数字字符仍然存在,并且同样的事情会再次发生。
This page更详细地解释了这个问题。
关于c - 文件无限地接受输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22516398/