问为什么不
strcat(string, '!');的函数调用是否会工作?
答字符和字符串之间存在着非常真实的区别,而strcat是将字符串连接起来。
像这样的字符常量'!'代表一个单独的字符。双引号之间的字符串字面量通常代表多个字符。像这样的字符串字面量"!"似乎代表一个单独的字符,但它实际上包含两个:你请求的!,以及 C 中终止所有字符串的\0。
C 中的字符由与其字符集值相对应的小整数表示(另请参见问题 8.6)。字符串由字符数组表示;你通常操作指向数组第一个字符的指针。当期望使用一个时,绝不能使用另一个。要将一个!追加到字符串,请使用
strcat(string, "!");
参考文献:CT&P 第 1.5 节,第 9-10 页