C中的strcat()函数更改程序中的随机变量?

问题描述 投票:0回答:1

这是我写的代码:

int main(void){

  int m = 8;
  char digits[] = {};

  printf("%d\n" , m);
  strcat(digits, "0");
  printf("%d\n" , m);
}

我希望变量m不变,但是输出是这样的:

8
0

为什么会这样?任何帮助将不胜感激。

c strcat
1个回答
1
投票

您的数组'digits'未分配任何内存,大小为零。当您对待它执行'strcat'时,C尝试使用您的变量的地址执行something,溢出,然后将内容放入存储器中的变量[[next到变量的位置。

看一下malloc函数,这里是一个解释它的链接。 https://www.tutorialspoint.com/c_standard_library/c_function_malloc.htm
© www.soinside.com 2019 - 2024. All rights reserved.