[英]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.