错误:无效操作数到二进制+ 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中添加字符串,因为字符串实际上只是指向字符数组的指针。 您需要做的是为新字符串分配存储空间,并将每个字符的两个字符串复制到其中。