2013-03-16 72 views
0

當我運行這個,我沒有得到任何錯誤,但字符串不會被連接。有人能告訴我在這裏發生了什麼嗎?連接cstrings C++

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'; 

然後程序崩潰。

+2

有一個原因['std :: string'](http://en.cppreference.com/w/cpp/string/basic_string)被髮明。 – 0x499602D2 2013-03-16 18:19:45

+0

's'是什麼?我沒有看到它在任何地方定義。它是否以null結尾? – antonijn 2013-03-16 18:20:23

+0

對不起修復了s,忘了tr – user12074577 2013-03-16 18:21:24

回答

1

你必須從一個空字符串開始。

替換:

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

有了:

t[0] = '\0'; 

現在str將在t串接n倍。

原始代碼正在離開第一個l-1未初始化的t字符。

+0

嗯,沒有修復它,程序沒有返回任何東西,如果我打電話(「嗨」,5) – user12074577 2013-03-16 18:29:31

+0

沒關係我想通了,謝謝 – user12074577 2013-03-16 18:41:16