在C中用空格分隔scanf输入

在C中用空格分隔scanf输入,c,for-loop,scanf,break,C,For Loop,Scanf,Break,我试着输入一系列数字,每个数字之间用空格隔开。一旦给出0,序列号必须停止输入 我使用for循环来实现这一点。如果我用\n分隔每个数字,在我将0作为一个数字给出后,它实际上会停止读取输入 但是,如果我用空格分隔每个数字,那么在我给出0之后,什么也不会发生。它只是不断地读取输入 我试图找到答案,如果答案显而易见,我很抱歉。我刚开始学C,请耐心点 int main(int argc, char **argv){ int ar[1000]; int i; printf("Gi

我试着输入一系列数字,每个数字之间用空格隔开。一旦给出
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;
}
int main(int argc,char**argv){
int-ar[1000];
int i;
printf(“给出一系列数字,用空格分隔。当`input为0时停止读取。\n-->:”`
对于(i=0;i
默认情况下,大多数命令行终端仅在您完成整行输入后才会向正在运行的程序发送输入。这是给你一个用退格键修正打字错误的机会


一个简单的解决方案是,将输入放在文本文件中并使用文件输入重定向,而不是手动输入(
您必须按enter键才能开始处理该行。
scanf
在您按enter键之前,甚至不会读取行上的第一个数字。如果我理解正确,scanf仅在您按enter键后初始化?没有办法吗?(使用scanf)要让它用空格初始化一个循环?谢谢你的回复。你的代码有几个编译错误,但应该可以处理那些固定的错误:大小需要在某个地方定义(也许你的头中有这个?),它应该与数组大小匹配;在printf的末尾有一个多余的撇号line@whizdiz请参阅,输入0时需要它停止读取是否有原因?为什么不在说明中说“完成后按enter键”?谢谢你的提示,以后可能会派上用场。虽然我现在尝试按照我的作业进行操作,这显然要求输入是手工完成的。在键入0后但在按下换行之前停止输入非常复杂,并且必须使用特定于操作系统的API。你确定这两项都是要求吗?也许必须在结尾键入换行符是可以的?事实上,我想我必须接受换行符。这些是第一节介绍性讲座之后的作业,它们不会像我找到的解决方案那样复杂。现在我正在尝试使用getchar(),但我认为缓冲区处理也必须解决,这很可能不是他们希望我做的。
myProgram.exe < myInput.txt