不同的行为
答
scanf
%s
转换说明符跳过前导空白字符并解析一个单词直到并且不包括随后的空格。
在%s
前面添加空格不起作用,它是完全冗余的。
这同样适用于%d
和%f
而不是%c
或%[
。
还要注意%s
和%[
说明符是有风险的,因为您不提供scanf
任何限制存储到目标中的字符数。对于sscanf()
,这可能是正确的,因为转换隐含地受到源字符串内容的限制,但必须避免scanf
和fscanf
。
您可以提供%
和s
的字符空终止之前存储的最大数量之间的数值参数:
char buffer[100];
if (scanf("%99s", buffer) == 1) {
/* a word was parsed correctly into buffer */
}
清洁香港这样的:http://*.com/questions/1247989/如何做,你允许,空间进入,使用scanf –
这是一个完全不同的问题 –
不,没有区别。 – user3386109