在C中用空格分隔scanf输入

时间:2015-06-05 21:52:29

标签: c for-loop scanf break

我尝试输入一系列数字,每个数字用空格分隔。一旦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;
}

1 个答案:

答案 0 :(得分:3)

默认情况下,大多数命令行终端只会在完成整行输入后向正在运行的程序发送输入。这是为了让您有机会使用退格键修复拼写错误。

一个简单的解决方案是,不是手动输入输入,而是将其放在文本文件中并使用文件输入重定向(var app = require( 'express' )(); var http = require( 'http' ).Server( app ); var io = require( 'socket.io' )( http ); var nsp = io.of('/chat'); // this is what needs to happen // and then we're listening to communication in the proper namespace nsp.on( 'connection', function( socket ){ console.log( 'user connected' ); socket.on('disconnect', function(){ console.log('user disconnected'); }); socket.on('message', function(msg){ nsp.emit( 'message', msg ); // this will broadcast message to everybody connected within the same namespace console.log('message: ' + msg); }); }); http.listen( 8090, function(){ console.log( "listening on :8090" ); }); )。此输入重定向语法适用于Linux和Windows shell。

<