这是我编写的代码:
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/