в то время как этот код работает:Memmove в то же указатель на удаление нескольких пробельные C
char * k = "asd";
char * j = malloc(sizeof(char) * 3);
memmove(j,k,3);
printf("%s",j);
в то время как код дает ошибку:
char * k = "asd";
char * j = malloc(sizeof(char) * 3);
memmove(k,k+1,3);
printf("%s",k); // output should be "sd"
Я имею в виду, не так? Почему это дает erorr? Я планирую использовать его для удаления нескольких пробелов («aaa ....... bbb» (точки являются пробелами) -> «aaa bbb»)
Спасибо.
Приведенный выше код является фиктивным и работает только на удачу. Вы не копируете завершающий '\ 0'. Поэтому строка j не имеет завершающего '\ 0'. Во втором коде вы изменяете глобальную константу «asd», которая является плохим. – chmike