【发布时间】:2021-10-08 20:05:54
【问题描述】:
我有以下代码。
#include <stdio.h>
#include <string.h>
int main()
{
char first[] = "foo";
char last[] = "bar";
strcat(first, last);
printf("%s\n", first);
return 0;
}
它可以编译,但是当我运行它时出现以下错误:
zsh: illegal hardware instruction ./output/strfunc.out
作为参考,我使用 clang 编译代码:
Apple clang version 12.0.5 (clang-1205.0.22.9)
Target: x86_64-apple-darwin20.6.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
我似乎无法使用与
【问题讨论】:
-
first的大小正好适合"foo"。使用strcat添加它会导致未定义的行为。尝试显式调整数组大小char first[128] = "foo"; -
first是一个大小为 4 的数组。它没有任何空间可以添加更多数据。 -
将
char first[] = "foo";更改为char first[7] = "foo";以便foo有足够的空间来存储结果字符串"foobar"。