检测到c-***堆栈粉碎***:即使我输入了更少的字符,也会终止

  • 本文关键字:终止 字符 堆栈 c ubuntu gcc
  • 更新时间 :
  • 英文 :

#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

相关内容

  • 没有找到相关文章