strcat() 不進行任何分配; 第二個串原樣不動地附加在第一個之後。 因此, 一種解決辦法是把第一個串聲明為數組:
char s1[20] = "Hello, ";由於 strcat() 返回第一個參數的值, 本例中為 s1, s3 實際上是多 余的; 在 strcat() 調用之後, s1 包含結果。
提問中的 strcat() 調用實際上有兩個問題: s1 指向的字符串常數, 除了空間不足以放入連接的字符串之外, 甚至都不一定可寫。 參見問題 1.13。
參考資料: [CT&P, Sec. 3.2 p. 32]。
翻譯朱群英、孫雲, LaTeX2HTML 編譯 朱群英 (2005-06-23)