使用 strcat() 时跟踪陷阱

Trace trap when using strcat()

我目前正在学习用 C 语言编程,我不明白为什么我的终端输出:“zsh: trace trap ./a.out”当 运行 我的代码时。

这是我的代码:

#include <stdio.h>
#include <string.h>

int main()
{
    char str[] = "Hello ";
    char str2[] = "Wolrd!";
    strcat(str, str2);
    printf("%s\n", str);
    return 0;
}

这是我在终端输入的内容:

gcc test.c
./a.out

问题是 str 是根据您用来初始化的文字的大小分配的。 strcat 假设您有足够的空间连接两个字符串。

str[] 更改为 str[100] 并且它会起作用,因为您有足够的 space 用于两个字符串。这解决了您的问题,但您需要了解数组、内存分配并阅读 strcat.

等函数的期望