我在想,我想写一个代码,如果没有用户输入,那么就做其他事情。即,当我请求输入,而用户没有输入任何内容时,他按下回车键,则代码会执行其他操作。。
我在C中尝试了几种方法,但似乎都不起作用,它一直在等待用户输入,即使在按下回车键后也是如此。。我会感谢的帮助
以下是我迄今为止所尝试的:
int input[2];
int i=0;
while(i<2){
scanf("%d", &input[i]);
if (input[0] == NULL){
break;
}
i++;
}
在null部分,我已经尝试了其他一些东西,比如"\0"\n"什么都不管用。。。我忘记或误解了什么?
按照其他人的建议,输入一行文本(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),可以改进。