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)