我有一个 arr[][]
形式的二维字符数组。我需要在末尾添加一个字符,有时在该数组的第 i 行或第 j 行的开头添加一个字符。这是代码片段:
arr[j] = strcat(arr[j],")");
arr[i] = strcat("(",arr[i]);
当我编译代码时,出现错误:赋值中的类型不兼容。现在我假设 arr[j]
和 arr[i]
是字符串。我哪里错了?换句话说,将字符附加或添加到字符串开头的最佳做法是什么?
最佳答案
首先,您不能将strcat
返回的char *
分配给现有的数组行。
但更重要的是,strcat
不会为连接的结果分配一个新字符串,而是在第一个字符串中就地执行连接。返回值总是第一个字符串,只是为了方便。因此,在第一种情况下,您只需要做:
strcat(arr[j],")");
(假设 arr[j]
对于添加的字符足够大)
第二种情况更复杂,因为您必须将 )
添加到现有字符串的开头。你可以例如在单独的缓冲区中执行操作,然后使用 strcpy
将其复制回 arr[j]
,或者将字符串的全部内容向前移动一个字符并手动添加括号:
memmove(arr[j]+1, arr[j], strlen(arr[j]));
arr[j][0]='(';
从你的错误来看,我担心你认为 char *
就像其他语言中的字符串类,但可惜它不是那样的。请记住,在 C 中,字符串只是字符的哑数组,不要指望像在高级语言中那样有任何花哨的商品。
关于c - C 中的 strcat 不兼容类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12131347/