我无法找出这个 c 程序有什么问题,它说**非法硬件指令**

I am unable to find out what is wrong with this c program it says **illegal hardware instruction**

这是简单的 C 程序

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

int main()
{
   
    char str1[] = "sandeep";
    char str2[] = "sahani";
    strcat(str1, str2);
    printf("%s %s", str1, str2);

    return 0;
}

strcat(str1, str2); 行给出错误,而没有此行程序正在运行。

我使用的代码编辑器是 VS code in Mac OS

这里有几个问题:

  1. 用静态数据初始化的字符数组应该被视为只读的,而不是更新的。您不能只在它的末尾添加更多字符。它可能会工作,也可能会产生错误。未定义的行为。
  2. 您必须为目标字符串分配足够的内存来容纳所有连接。
int main()
{
       
    char str1[] = "sandeep";
    char str2[] = "sahani";
    char str3[100] = {0};
    
    strcat(str3, str1);
    strcat(str3, str2);    
    printf("%s %s  %s", str1, str2,str3);

    return 0;
}

如果您不指定数组的大小,则该大小刚好足以容纳它的初始化值。所以 str1 只有 8 个字符(7 个字符加上空终止符)。空间不足,无法添加 sandeep

如果你想连接它,你需要它有空间容纳额外的字符串。因为 str2 是 6 个字符,所以 str1 至少需要 14 个字符。所以将其更改为:

char str1[14] = "sandeep";