如何将 scanf 用于 char 数组输入?

How to use scanf for a char array input?

我设置了一个大小为 10 的字符数组,想检查允许输入的实际大小。

我测试了

123456789; 1234567890; 123456789123456789

有趣的是,他们都通过了并得到了正确的输出

123456789; 1234567890; 123456789123456789

这让我很困惑,因为我认为最后两个输入错误。

这有意义还是编译器差异?

这是代码

#include <stdio.h>
main()    
{    
char input[10];    
scanf("%s", input);    
printf(input);    
}  '  

带格式说明符 %sscanf() 扫描输入,直到遇到 space。在您的情况下,您看到的是未定义的行为。 您的数组可以容纳 10 chars,但您写的超出了它的边界。

虽然您现在得到了预期的答案,但这并不总是得到保证,反而可能会导致崩溃。

建议使用 fgets() 等函数来处理缓冲区溢出。

您可以使用

scanf("%9s", input);