0

これを実行すると、エラーは発生しませんが、文字列は連結されません。誰かが私がここで間違っていることを教えてもらえますか?

char *con(const char str[], int n) {
    char * t = new char[60];
    int l = strlen(str);
    t[l] = '\0';
    if (n <= 0) {
        return t;
    } else {
        for (int i = 0; i < n; i++) {
            strcat(t, str);
        }
        return t;
    }
}

私が試してみると:

int l = strlen(str);
t[l] = '\0';

その後、プログラムがクラッシュします。

4

1 に答える 1

1

空の文字列から始める必要があります。

交換:

int l = strlen(str);
t[l] = '\0';

と:

t[0] = '\0';

strで連結されたn時間になりますt

元のコードでは、最初のl-1文字が初期化されてtいませんでした。

于 2013-03-16T18:23:19.590 に答える