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

标签 c strcat

这是我编写的代码:

int main(void){

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

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

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

8
0

为什么会发生这种情况?任何帮助将不胜感激。

最佳答案

您的数组“digits”未分配任何内存,大小为零。当您将其执行“strcat”时,C 会尝试使用变量的地址执行某些操作,发生溢出,并将内容放入变量位置旁边的内存中。 p>

看一下 malloc 函数,这里有一个解释它的链接。 https://www.tutorialspoint.com/c_standard_library/c_function_malloc.htm

关于c - C 中的 strcat() 函数更改了程序中的随机变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58575512/

相关文章:

C - 使用 malloc 创建一个数组,然后循环遍历它

C:给定已知的地址和类型,如何打印其中存储的值?

c - 为什么在两个字符串之间添加一个空格会连接c中的字符串?

c - strcat() 和 read() 如何处理 C 中的 '\0'

c++ - 如何在 SQLite 中传递用于触发函数的变量?

c - 使用microsoft Visual C++ 2008调试C程序

c - 为什么 "i =++i;"和 "i =++i + 2;"是未定义的行为?

c - 串联+ itoa的问题

c - 总线错误 : 10 don't know why

c - strcat C 不打印和 int 到 char*