错误:无效操作数到二进制+ char *

可能重复:
C字符串连接

有以下代码:

char *doencode(const unsigned char *input, int length) { //irrelevant code } char *fname, *lname; char *encoded, *name; name = fname + "|" + lname; encoded = doencode(name, 30); 

我得到这个错误:二进制+的无效操作数

如何组合fname和| &lname?

你不能连接char*char[]"|" )或使用+任何排列。 请改用strncat()snprintf()并确保目标缓冲区有足够的内存来存储最终的字符串。

C不像java脚本。 这在c中是不正确的:

 name = fname + "|" + lname; 

你可以这样做:

 sprintf(name,"%s|%s", fname, lname); 

name指针应指向足够的内存空间。

 name = malloc(strlen(fname)+strlen(lname) + 2); 

+2:+1为"|" 和字符串末尾的null +1

 #include #include #include int main() { char *fname, *lname, *name; printf("Enter your first name: "); scanf ("%ms", &fname); printf("Enter your last name: "); scanf (" %ms", &lname); name = malloc(strlen(fname)+strlen(lname) + 2); sprintf(name,"%s|%s", fname, lname); printf("name = %s\n",name); } 

你不能简单地在C中添加字符串,因为字符串实际上只是指向字符数组的指针。 您需要做的是为新字符串分配存储空间,并将每个字符的两个字符串复制到其中。