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

问题描述 投票:0回答:3

当用户只按下输入而没有任何输入但是空的时候,我需要做一些事情。当用户的输入是什么时,\0总是在最后一个字符后面。例如

输入:你好世界

\0总是在prom[11],但当用户按下时只输入\0不存在。

char prom[100];
scanf("%[^\n]", prom); 
if (prom[0] == '\0'){ //if user press enter 
//do something
}
c scanf
3个回答
1
投票

从来没有任何一个任意长度的字符串。它是安全漏洞的来源和错误的一般来源,您将很难在以后找到它。如果隐式指定要读取的字符串的最大长度,则可以使用scanf查找字符串(请参阅scanf格式说明符)。但在你的情况下,使用fgets更快更安全。读取字符串。检查你是否确实已经读过它(通过fgets的返回值),然后检查第一个字符(如果它实际存在)是否为'\ n'。如果是这样,则用户提示空字符串。

除了你有你的字符串,你可以安全地用sscanf解析它,你需要解析的消息。


0
投票

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


0
投票

scanf()返回转换后的字符数。测试返回值为0,看是否没有进行转换。

© www.soinside.com 2019 - 2024. All rights reserved.