簡體   English   中英

錯誤:C 中的“zsh:非法硬件指令”

[英]Error: 'zsh: illegal hardware instruction' in C

我正在學習string.h頭文件並編寫了一個簡單的程序來連接兩個字符串。

簡單的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;
}

收到一條錯誤消息:

"/Users/sandeepsahani/Desktop/Sandeep Sahani/Basic Programming/ C programming/Basic Programs/DS/"stringConcat zsh: 非法硬件指令

我的代碼有什么問題?

這里有幾個問題:

  1. 用靜態數據初始化的 char 數組應該被視為只讀的,而不是更新的。 您不能只在它的末尾添加更多字符。 它可能會工作,也可能會產生錯誤。 未定義的行為。
  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";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM