【发布时间】:2015-06-05 21:52:28
【问题描述】:
我尝试输入一系列数字,每个数字用空格分隔。一旦给出0,这一系列数字就必须停止输入。
我使用for 循环来执行此操作。如果我用\n 分隔每个数字,在我将0 作为数字给出后,它确实会停止读取输入。
但是,如果我改为用空格分隔每个数字,则在我提供 0 后不会发生任何事情。它只是不断读取输入。
我试图找到答案,如果解决方案很明显,我很抱歉。我刚从C开始,请多多包涵。
int main(int argc, char **argv){
int ar[1000];
int i;
printf("Give a series of numbers, separated by space. Stop reading when `input is 0.\n --> : ");`
for (i = 0; i < SIZE ; i++){
scanf("%d", &ar[i]);
if (ar[i] == 0){break;}
}
return 0;
}
【问题讨论】:
-
您必须按 Enter 键才能开始处理该行。
scanf甚至不会读取一行中的第一个数字,直到您按下回车键。 -
如果我理解正确,scanf 仅在您按回车后初始化?有没有办法解决这个问题? (使用scanf)使其初始化带有空格的循环?感谢您的回复。
-
您的代码有几个编译错误,但应该可以修复这些错误:需要在某个地方定义 SIZE(也许您在标题中有这个?),它应该真正匹配您的数组大小;并且您的 printf 行末尾有一个杂散撇号
-
输入 0 时是否需要它停止读取?为什么不在你的说明中说“完成后按 Enter”?