Использование malloc
необходимо, но так: mystring[0] = malloc(strlen(mystring) + 1);
неправильно, так как вы не можете выполнить strlen
для mystring (потому что он еще не содержит никакой строки и потому что сам указатель не являетсяинициализируется).Выделите буфер с размером вашей строки.например:
int bar(char ** mystring) {
char* hello = "hahaha";
*mystring = malloc(strlen(hello) + 1);
strcpy(*mystring, hello);
return 0;
}
Кстати, вы можете использовать присвоение *mystring = "hahaha";
без malloc
, так как это строка, хранящаяся в разделе данных, и данные не будут потеряны после возврата из функции, но таким образом это только для чтения данных, и вы не можете изменить их.strcpy
существует для копирования строки в выделенный буфер.