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 никак не меняется?
Если нужно, чтобы память для 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;
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
У меня следующий вопрос по QtЯ создал журнал событий, вывод свойств этих событий
Почему в devcpp strcmp возвращает только 0, 1, -1 а не разницу символов в коде ascii в отличии от других компиляторов?
Как правильно написать шаблонную функцию для нахождения максимума двух чисел?