我在想,我想编写一个代码,如果没有用户输入则执行其他操作。即当我要求输入并且用户没有输入任何他输入的内容时,代码会执行其他操作..
我在C中尝试了几种方法,但似乎无法正常工作,即使在按下输入后仍会等待用户输入..我会感激一点帮助
这是我到目前为止所尝试的内容:
int input[2];
int i=0;
while(i<2){
scanf("%d", &input[i]);
if (input[0] == NULL){
break;
}
i++;
}
在null部分,我尝试了其他几个东西,比如'\ 0''\ n'没有任何作用......我忘记或误解了什么?
答案 0 :(得分:3)
根据其他人的建议,输入一行文字(getline
或fgets
)并对其进行解析(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)并且可以改进。