2013-03-16 4 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

+0

Что такое '' '? Я не вижу, чтобы это определялось где угодно. Оканчивается ли оно нулевым? – antonijn

+0

Извините исправлено s, забыли tr – user12074577

ответ

1

Вы должны начать с пустой строки.

Заменить:

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

С:

t[0] = '\0'; 

str Теперь будет слита n раз в t.

Оригинальный код оставил первые l-1 символов в t неинициализирован.

+0

Хмм, что не исправить, программа ничего не возвращает, если я позвоню («привет», 5) – user12074577

+0

Nevermind Я понял, спасибо – user12074577

Смежные вопросы