#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char *func(char * str){
int len;
len=strlen(str)+3;
str = (char *)realloc(str,len);
return str;
}
void main(){
printf("str:%s",func("hello"));
}
Окончательные отпечатки ans (null), вместо печати строки: «привет». Может кто-нибудь объяснить, почему это так? Я не могу идентифицировать ошибку. Может ли кто-нибудь исправить ошибку и помочь мне с рабочим кодом. Пожалуйста!Почему realloc не работает должным образом в этом случае?
'void main() {..' Не удивительно .... –
Вы вызываете realloc на char *, который не может быть перераспределен. Таким образом, он терпит неудачу и возвращает NULL. –
Вопрос помечен как «динамическое распределение», и все же нет никого в виду ... @WilliamPursell. Не следует ли это генерировать предупреждение или полный сбой компиляции для передачи «char const *» (тип строкового литерала) to 'func()'? Я в основном программирую C++ 14 со всеми предупреждениями, поэтому, возможно, я слишком привык к безопасности хорошего типа ... –