#include<stdio.h>
int main()
{
char x[6];
scanf("%S",x);
printf("%S",x);
return 0;
}
代码很简单,输出:
*** stack smashing detected ***: terminated
即使我只输入一个字符,我也知道金丝雀保护变量。
但是编译器是将该变量添加到我的数组中,还是有其他内容?
使用%s
格式说明符,而不是%S
。请注意CCD_ 3的原型是CCD_。您的代码应该是:
#include <stdio.h>
int main(void)
{
char x[6];
scanf("%s",x);
printf("%sn",x);
return 0;
}
用途:
$ ./main
abc
abc