当用户只按下输入而没有任何输入但是空的时候,我需要做一些事情。当用户的输入是什么时,\0
总是在最后一个字符后面。例如
输入:你好世界
\0
总是在prom[11]
,但当用户按下时只输入\0
不存在。
char prom[100];
scanf("%[^\n]", prom);
if (prom[0] == '\0'){ //if user press enter
//do something
}
从来没有任何一个任意长度的字符串。它是安全漏洞的来源和错误的一般来源,您将很难在以后找到它。如果隐式指定要读取的字符串的最大长度,则可以使用scanf查找字符串(请参阅scanf格式说明符)。但在你的情况下,使用fgets更快更安全。读取字符串。检查你是否确实已经读过它(通过fgets的返回值),然后检查第一个字符(如果它实际存在)是否为'\ n'。如果是这样,则用户提示空字符串。
除了你有你的字符串,你可以安全地用sscanf解析它,你需要解析的消息。
如果prom [0] =='\ n',fgets()是条件的解决方案
scanf()返回转换后的字符数。测试返回值为0,看是否没有进行转换。