在开始运行后一直处于输入状态,无法输出结果,多次敲击回车键只会使光标不断向下移动。
代码:#include <stdio.h>
#define N 100
int a[N];
int main()
{
int i=0,n;
while(scanf("%d",&a[i])!=EOF)
{
i++;
}
n=i;
for(i=n-1;i>=0;i--)
printf("%d ",a[i]);
printf("\n");
return 0;
}
需要用Ctrl + z组合键然后按 Enter 键的方式来告诉系统已经到了EOF,这样系统才会结束while.
接下来讲怎么结束输入
一:没有说固定的数据量,只给出以某一特定标识符作为结束标志,结束输入数据。常见是以输入0作为结束标志。
二:没有说固定的数据量,结束没有固定标识符,以手动结束输入循环。
分析一:以某一特定结束符作为终止循环的条件,通常是将0作为终止标志。
解决方法:while( scanf("%d",&n) != EOF, n ){ }
(我们来看括号中的n代表的是若我们在前一句输入的是0,即此时n = 0即表达式需要结束循环,即实现了结束多次输入数据。)
若是-1作为终止标志,可以这样写while( scanf("%d",&n) != EOF, n != -1) { }
(输入-1时,n此时==-1,则表达式n != -1为 -1,结束循环。)
“,”号运算符作用:while后的括号为循环体的执行条件,其值取逗号运算后的值。
分析二:无固定结束标识符,手动结束多组输入。
解决方法:在终端(黑框)中手动输入时,系统并不知道什么时候到达了所谓的“文件末尾”,因此需要用Ctrl + z组合键然后按 Enter 键的方式来告诉系统已经到了EOF,这样系统才会结束while.
输入ctrl+z才会结束输入,输入回车没用的。
你这个程序要输入三次ctrl+z结束
scanf的返回值是成功输入的变量的个数,EOF是end of file,它们两个怎么能够相等呢?
ctrl+z 然后enter