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

时间:2013-01-08 16:20:07

标签: c char

  

可能重复:
  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的?

3 个答案:

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