使用scanf检查C中用户的输入是否为空

时间:2019-03-20 15:32:49

标签: c scanf

当用户只按Enter键而没有任何输入但那是空的时,我需要做些事情。当用户输入某些内容时,\0总是紧跟在最后一个字符之后。例如

  

input:hello world

\0始终位于prom[11]中,但是当用户仅按Enter时,\0就不存在。

char prom[100];
scanf("%[^\n]", prom); 
if (prom[0] == '\0'){ //if user press enter 
//do something
}

3 个答案:

答案 0 :(得分:1)

从不扫描任意长度的字符串。这是安全漏洞的源头,也是一般错误的源头,以后您将很难找到。如果隐式指定要读取的字符串的最大长度(请阅读有关scanf格式说明符的信息),则可以使用scanf查找字符串。但是根据您的情况,仅使用fgets会更快,更安全。读取字符串。检查您是否已实际读取(通过fgets的返回值),然后检查第一个字符(如果实际存在)是否为'\ n'。如果是这样,则用户提示了一个空字符串。

除了拥有字符串外,您还可以使用sscanf安全地解析您需要解析的消息。

答案 1 :(得分:0)

fgets()是条件的解决方案,如果prom [0] =='\ n'

答案 2 :(得分:0)

scanf()返回转换后的字符数。将返回值测试为0,以查看是否未完成转换。