当用户只按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
}
答案 0 :(得分:1)
从不扫描任意长度的字符串。这是安全漏洞的源头,也是一般错误的源头,以后您将很难找到。如果隐式指定要读取的字符串的最大长度(请阅读有关scanf格式说明符的信息),则可以使用scanf查找字符串。但是根据您的情况,仅使用fgets会更快,更安全。读取字符串。检查您是否已实际读取(通过fgets的返回值),然后检查第一个字符(如果实际存在)是否为'\ n'。如果是这样,则用户提示了一个空字符串。
除了拥有字符串外,您还可以使用sscanf安全地解析您需要解析的消息。
答案 1 :(得分:0)
fgets()是条件的解决方案,如果prom [0] =='\ n'
答案 2 :(得分:0)
scanf()返回转换后的字符数。将返回值测试为0,以查看是否未完成转换。