Это не работает, потому что вы никогда не выделяли память для своей переменной result
- это просто указатель, указывающий в никуда.
char result[1000]; // change size as needed if you know the size ahead of time
func(result);
или
char *pResult = malloc ( 1000 ); // allocate dynamically
if ( pResult != NULL )
func ( pResult );
...
if ( pResult != NULL )
free ( pResult );
Вы должнытакже передайте размер буфера, чтобы ваша функция func
могла проверить и убедиться, что для ее вывода достаточно места.
Оба эти решения предполагают, что вы выделяете буфер вне func
.Если вы хотите выделить выходной буфер внутри func
, чем - как предлагает Als - вам нужно передать указатель на указатель.В этом случае вам также следует вернуть размер буфера, чтобы вызывающая сторона знала, сколько байтов доступно в буфере.