簡體   English   中英

簡單的 C 程序使用<string.h>方法未運行</string.h>

[英]Simple C program using <string.h> methods not running

我有以下代碼。

#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

我似乎無法使用任何與 <string.h> 關聯的方法。 我在網上看過但一無所獲,有什么想法嗎?

char first[] = "foo";

這告訴編譯器創建一個大小正好適合初始化字符串的數組。 它沒有空間可以添加更多字符。 因此,嘗試使用strcat將字符串添加到末尾會導致緩沖區溢出,從而導致未定義的行為。

一種解決方案是明確調整數組的大小:

#define MAX_SIZE 32
char foo[MAX_SIZE] = "foo";

暫無
暫無

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

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