Функция strcat не работает с указателями - PullRequest
0 голосов
/ 05 октября 2019
int main(int argc , int *argv[]){

char str[7] = "Mobile";
char str2[11] = "Samsung4g";

char *str3 = 0;
str3 = ( char* )(malloc(30));

str3 = "Carrier";

strcat(str3, str);//Problem facing here, dunno why

1 Ответ

0 голосов
/ 05 октября 2019

Подобно тому, что другие упоминали в комментариях, оператор:

str3 = "Carrier";

заменяет значение str3 на адрес строкового литерала «Carrier», что приводит к потере адреса, возвращаемого функцией malloc (). .

Использование str3 затем в strcat () в качестве первого аргумента пытается изменить строковый литерал, что приводит к неопределенному поведению.

Используйте strcpy () или эквивалентные функции для копирования строк в C.

...