-1

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

4

3 回答 3

8

您不能连接char*and char[](the "|") 或 using 的任何排列+。使用strncat()orsnprintf()代替并确保目标缓冲区有足够的内存来存储最终字符串。

于 2013-01-08T16:23:11.800 回答
4

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

name = fname + "|" + lname;

你可以这样做:

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

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

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

+2: +1 for"|"和 +1 fornull在字符串的末尾

例子

#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);

}
于 2013-01-08T16:22:51.693 回答
0

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

于 2013-01-08T16:23:05.593 回答