0

我一直在尝试使用 strcat(array, &charVariable) 将 charVariable 添加到数组中,当我显示数组时,它会显示这个╠╠╠╠╠╠╠╠。谁能帮我吗?

4

3 回答 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()

  1. 目标字符串必须已经有一个空字符 ('\0') 终止符,否则strcat()将无法找到它的结尾。

  2. 除了字符和它已经包含的终止空字符之外,目标字符串必须足够大以容纳要附加到它的字符串。

  3. 您附加到目标字符串的源字符串也必须有一个空终止符,否则strcat()将无法找到它的结尾。

附录

@dasblinkenlight 提供了一种正确的方法。这是另一个:

size_t  len;
len = strlen(array);
array[len] = charVariable;
array[len+1] = '\0';
于 2012-11-09T01:37:13.930 回答