之间有什么区别吗?
scanf("%s", c);
Run Code Online (Sandbox Code Playgroud)
和
scanf(" %s", c);
Run Code Online (Sandbox Code Playgroud)
它可以以任何方式影响我的程序吗?提前致谢.
该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 */
}
Run Code Online (Sandbox Code Playgroud)