C语言中的strcat不兼容类型错误

Viv*_*han 2 c string incompatibletypeerror strcat

我有一个2d字符数组的形式arr[][].我需要在结尾添加一个字符,有时添加到此数组中第i行或第j行的开头.这是代码片段:

 arr[j] = strcat(arr[j],")");
 arr[i] = strcat("(",arr[i]);
Run Code Online (Sandbox Code Playgroud)

当我编译代码时,我得到错误:赋值中的不兼容类型.现在我假设arr[j]并且arr[i]是字符串.我哪里错了?换句话说,在字符串的开头追加或添加字符的最佳做法是什么?

Mat*_*lia 5

首先,您不能将char *返回的值分配给strcat现有的数组行.

但更重要的是,strcat不会为连接的结果分配新的字符串,而是在第一个字符串中执行连接.返回值始终是第一个字符串,只是一个方便.所以,在第一种情况下你只需要这样做:

strcat(arr[j],")");
Run Code Online (Sandbox Code Playgroud)

(假设arr[j]对于添加的角色足够大)

第二种情况更复杂,因为您必须将其添加)到现有字符串的开头.您可以例如在单独的缓冲区中执行操作,然后将其复制回arr[j]使用strcpy,或者将字符串的整个内容向前移动一个字符并手动添加括号:

memmove(arr[j]+1, arr[j], strlen(arr[j]));
arr[j][0]='(';
Run Code Online (Sandbox Code Playgroud)

从你的错误中我害怕你认为这char *就像其他语言中的字符串类,但唉,它不是那样的.请记住,在C字符串中只是笨拙的字符数组,不要指望在高级语言中有任何花哨的商品.