-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()代わりにorを使用snprintf()し、最終的な文字列を格納するのに十分なメモリが宛先バッファーにあることを確認してください。

于 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 と +1null

#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 で文字列を単純に追加することはできません。あなたがしなければならないことは、新しい文字列用のストレージを割り当て、文字ごとに 2 つの文字列をコピーすることです。

于 2013-01-08T16:23:05.593 に答える