0

重複の可能性:
Cの関数から文字列を返す

したがって、aとbのcstringの配列の要素0を組み合わせて、呼び出し元にポインターを返そうとしています。関数内でreturnStrが設定されていますが、呼び出し元の関数からの戻り値を割り当てると、値が本来あるべき値になりません。

char* combineCstr(char **a, char **b)
{
    char *returnStr;
    char str[20];
    strcpy(str, a[0]);
    strcat(str, "+");
    strcat(str, b[0]);

    returnStr= str;
    return returnStr;
}

私は完全に混乱しています、そしてどんな助けでもありがたいです、ありがとう。

4

1 に答える 1

4

ローカル配列 ( ) を返していstrます。関数が終了すると、そのメモリが再利用されるため、これは有効なコードではありません。これに対するコンパイラの警告を受け取っているはずです。

いずれかの入力に結果用のスペースがあると信頼できない場合は、egmalloc()を使用して新しいメモリを割り当て、文字列をそのメモリに連結する必要があります。関数が終了しても影響を受けません。

于 2013-02-05T14:10:51.400 に答える