可能重复:
C String Concatenation
有以下代码:
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的?
答案 0 :(得分:8)
您无法连接char*
和char[]
("|"
)或使用+
的任何排列。请改用strncat()
或snprintf()
,确保目标缓冲区有足够的内存来存储最终字符串。
答案 1 :(得分:4)
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<stdio.h>
#include<stdlib.h>
#include<string.h>
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);
}
答案 2 :(得分:0)
你不能简单地在C中添加字符串,因为字符串实际上只是指向字符数组的指针。您需要做的是为新字符串分配存储空间,并将每个字符的两个字符串复制到其中。