[英]*** stack smashing detected ***: terminated even when i enter much less chars
#include<stdio.h>
int main()
{
char x[6];
scanf("%S",x);
printf("%S",x);
return 0;
}
代码很简单,output:
*** stack smashing detected ***: terminated
即使我只输入一个字符,我也知道金丝雀保护变量。
但是编译器是否将该变量添加到我的数组中或者还有其他东西?
使用%s
格式说明符,而不是%S
。 请注意, main
的正确原型是int main(void)
。 您的代码应该是:
#include <stdio.h>
int main(void)
{
char x[6];
scanf("%s",x);
printf("%s\n",x);
return 0;
}
利用:
$ ./main
abc
abc
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.