1

2つの定数char*を結合し、結果を返す関数があります。私がやりたいのは、charを定数char*に結合することです。

char *command = "nest";
char *halloween =  join("hallowee", command[0]);   //this gives an error

char *join(const char* s1,  const char* s2)
{
    char* result = malloc(strlen(s1) + strlen(s2) + 1);

    if (result)
    {
            strcpy(result, s1);
            strcat(result, s2);
    }

    return result;
}
4

3 に答える 3

4

あなたが書いた関数には、2 つの C 文字列 (つまり、2 つのconst char *変数) が必要です。ここで、2 番目の引数はcommand[0]ポインター ( const char *) ではなく、単純な「n」文字 ( const char) です。ただし、この関数は、渡された値がポインターであると認識し、文字 'n' の ASCII 値で指定されたメモリ アドレス内の文字列を検索しようとするため、問題が発生します。

編集:それを機能させるには、join関数を変更する必要があります:

char *join(const char* s1,  const char c)
{
    int len = strlen(s1);
    char* result = malloc(len + 2);

    if (result)
    {
            strcpy(result, s1);
            result[len] = c;         //add the extra character
            result[len+1] = '\0';    //terminate the string
    }

    return result;
}
于 2011-08-23T10:59:02.510 に答える
2

単一の文字を結合したい場合は、文字数を取得しs2て追加する別の関数を作成する必要があります。

于 2011-08-23T10:51:27.090 に答える
1

最善の方法は、単一の文字を文字列に追加できる新しい関数を作成することです。join()ただし、何らかの理由でこの機能をそのまま使用したい場合は、次のように進めることもできます。

char *command = "nest";
char *buffer  = " "; // one space and an implicit trailing '\0'
char *halloween;

*buffer = command[0];
halloween = join("hallowee", buffer);  
于 2011-08-23T13:25:36.410 に答える