如果没有用户输入(在C中)

时间:2014-11-10 14:47:46

标签: c

我在想,我想编写一个代码,如果没有用户输入则执行其他操作。即当我要求输入并且用户没有输入任何他输入的内容时,代码会执行其他操作..

我在C中尝试了几种方法,但似乎无法正常工作,即使在按下输入后仍会等待用户输入..我会感激一点帮助

这是我到目前为止所尝试的内容:

int input[2];
int i=0;

while(i<2){
    scanf("%d", &input[i]);
    if (input[0] == NULL){
        break;
    }
    i++;

}

在null部分,我尝试了其他几个东西,比如'\ 0''\ n'没有任何作用......我忘记或误解了什么?

1 个答案:

答案 0 :(得分:3)

根据其他人的建议,输入一行文字(getlinefgets)并对其进行解析(sscanf)。在一般情况下(当用户必须输入数据时)这可能是更好的做法,因为它总是读取整行输入,而scanf只读取行的一部分,其余部分输入缓冲液中。

int input[2];
char* line = NULL;
size_t size = 0;

...

getline(&line, &size, stdin);
if (sscanf(line, "%d%d", &input[0], &input[1]) == 2)
{
    // do what you need with the input
}
else
{
    // user didn't supply data - do something else
}

注意getline动态分配一些内存;如果你使用它,你应该正确释放内存。

char* line = NULL;
size_t size = 0;

...

getline(&line, &size, stdin);

...

free(line);

使用动态内存分配并非易事;如果你不确定你做对了,你可能想问一个单独的问题。上面的代码示例有点懒(不检查EOF和NULL)并且可以改进。