我一直在尝试使用 strcat(array, &charVariable) 将 charVariable 添加到数组中,当我显示数组时,它会显示这个╠╠╠╠╠╠╠╠。谁能帮我吗?
问问题
248 次
3 回答
6
问题是strcat
需要一个指向以空字符结尾的字符序列的指针。在您的情况下,您正在传递一个独立char
变量的地址。如果紧随char
变量后内存中的项目不为零,您将触发未定义的行为(附加垃圾字符或崩溃)。
以下是如何正确执行此操作:
char tmp[2];
tmp[0] = charVariable;
tmp[1] = '\0';
strcat(array, tmp);
于 2012-11-09T01:33:28.813 回答
1
strcat
旨在用于字符串,其\0
末尾有一个空字节。您可以尝试 dasblinkenlight 建议的方法,但更有效的方法(假设array
有足够的空间来添加额外的字符,无论如何您都必须假设使用strcat
)是:
int len = strlen(array);
array[len] = charVariable;
array[len+1] = '\0';
于 2012-11-09T01:41:11.507 回答
-2
使用规则strcat()
:
目标字符串必须已经有一个空字符 ('\0') 终止符,否则
strcat()
将无法找到它的结尾。除了字符和它已经包含的终止空字符之外,目标字符串必须足够大以容纳要附加到它的字符串。
您附加到目标字符串的源字符串也必须有一个空终止符,否则
strcat()
将无法找到它的结尾。
附录
@dasblinkenlight 提供了一种正确的方法。这是另一个:
size_t len;
len = strlen(array);
array[len] = charVariable;
array[len+1] = '\0';
于 2012-11-09T01:37:13.930 回答