Однако, когда я пытаюсь использовать его, я получаю сообщение об ошибке «возвращая char» из функции без приведения ».
Эта ошибка просто означает, что возвращаемое значение не соответствует объявлению функции.В своем объявлении функции вы упомянули, что он возвращает char *
.Однако в вашем фактическом операторе return вы возвращаете *result
, который является разыменованным указателем на символ, то есть char
.
Вторая проблема в вашем коде заключается в том, что вы возвращаете массив из функции.Память, выделенная с использованием массива в методе, становится недоступной для метода вызывающей стороны.Вам необходимо создать память в куче и вернуть указатель на нее, а затем позволить вызывающей стороне освободить память после использования.
Извлечь следующий рабочий код:
char* strcat1(char dest[], char src[]) {
int destL = lenstr(dest);
int srcL = lenstr(src);
char * result = malloc(sizeof(char) * (destL + srcL));
int i;
for(i = 0; i < destL; i++){
result[i] = dest[i];
}
for(i = destL; i < destL+srcL; i++){
result[i] = src[i-destL];
}
return result;
}
Пожалуйста, убедитесь, чтовызывающая сторона освобождает результат, как показано ниже:
char * result = strcat1("hi", "ho");
printf(result);
free(result);