繁体   English   中英

***检测到堆栈粉碎***:即使我输入的字符少得多,也会终止

[英]*** 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM