2016-12-05 65 views
0

不同的行为

scanf("%s", c); 

之间的一些差异 ​​

等影响我以任何方式计划? 在此先感谢。

+1

清洁香港这样的:http://stackoverflow.com/questions/1247989/如何做,你允许,空间进入,使用scanf –

+0

这是一个完全不同的问题 –

+1

不,没有区别。 – user3386109

回答

8

scanf%s转换说明符跳过前导空白字符并解析一个单词直到并且不包括随后的空格。

%s前面添加空格不起作用,它是完全冗余的。

这同样适用于%d%f而不是%c%[

还要注意%s%[说明符是有风险的,因为您不提供scanf任何限制存储到目标中的字符数。对于sscanf(),这可能是正确的,因为转换隐含地受到源字符串内容的限制,但必须避免scanffscanf

您可以提供%s的字符空终止之前存储的最大数量之间的数值参数:

char buffer[100]; 
    if (scanf("%99s", buffer) == 1) { 
     /* a word was parsed correctly into buffer */ 
    }