Я играл с memmove, и я понимаю, как это работает. Но всякий раз, когда конечный результат содержит больше исходного исходного размера, он печатает кучу случайных чисел. Например:Memmove() в C дважды печатает результат
char str[] = "abcdefgh";
memmove(str + 6, str + 3, 4);
printf("%s\n", str);
дает мне выход abcdefdefgbdefggh
, когда он должен дать мне abcdefdefg
Почему другие символы добавляются в ул?
Вы писали про конец своего буфера. Это вызывает неопределенное поведение. Вы использовали 'printf ("% s "' с чем-то, что не является строкой, это также вызывает неопределенное поведение. –