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

  • 本文关键字:用户 如果没有 c
  • 更新时间 :
  • 英文 :


我在想,我想写一个代码,如果没有用户输入,那么就做其他事情。即,当我请求输入,而用户没有输入任何内容时,他按下回车键,则代码会执行其他操作。。

我在C中尝试了几种方法,但似乎都不起作用,它一直在等待用户输入,即使在按下回车键后也是如此。。我会感谢的帮助

以下是我迄今为止所尝试的:

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

在null部分,我已经尝试了其他一些东西,比如"\0"\n"什么都不管用。。。我忘记或误解了什么?

按照其他人的建议,输入一行文本(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),可以改进。

相关内容

最新更新