Не копируются char-ы

129
18 мая 2019, 05:10
void strcpy1 (char * dest, const char * src){
int lSrc = strlen1(src); 
dest = new char [lSrc];
for (int i =0; i<lSrc; i++)
    dest[i]=src[i];
}

Суть вопроса: почему, если закоментировать dest = new char [lSrc];, то функция работает (с оговорками), а без коммента - dest никак не меняется?

Answer 1

Если нужно, чтобы память для dest выделялась внутри функции, то вариатны:

#include <iostream>
#include <cstring>
static char* strcpy1( const char* src )
{
    size_t sz = std::strlen( src ) + 1;
    char* dest = new char[sz];
    for( size_t i = 0; i < sz; ++i ) {
        dest[i] = src[i];
    }
    return dest;
}
static char* strcpy1( char** dest, const char* src )
{
    size_t sz = std::strlen( src ) + 1;
    *dest = new char[sz];
    for( size_t i = 0; i < sz; ++i ) {
        (*dest)[i] = src[i];
    }
    return *dest;
}
int main()
{
    char* d = strcpy1( "123" );
    std::cout << d << std::endl;
    delete[] d;
    strcpy1( &d, "456" );
    std::cout << d << std::endl;
    delete[] d;
}
READ ALSO
Поиск событий в QTableWidget

Поиск событий в QTableWidget

У меня следующий вопрос по QtЯ создал журнал событий, вывод свойств этих событий

100
strcmp in devcpp

strcmp in devcpp

Почему в devcpp strcmp возвращает только 0, 1, -1 а не разницу символов в коде ascii в отличии от других компиляторов?

101
Максимум 2 чисел [закрыт]

Максимум 2 чисел [закрыт]

Как правильно написать шаблонную функцию для нахождения максимума двух чисел?

110
Создание n объектов в цикле

Создание n объектов в цикле

Почему следующая программа не печатает "Created 10 objects" ?

95