Memmove ile oynamaktaydım ve nasıl çalıştığını anladım. Ancak sonuç, orijinal kaynak boyutundan daha fazlasını içerdiğinde, bir grup rasgele sayı basar. Örneğin:C'deki Memmove(), sonucu iki kez yazdırır
char str[] = "abcdefgh";
memmove(str + 6, str + 3, 4);
printf("%s\n", str);
bana çıktı abcdefdefgbdefggh
diğer karakterler str içine ekleniyor Neden bana abcdefdefg
vermelidir verir? dizeye eklenen
Arabelleğinizin sonunu yazdınız. Bu tanımlanmamış davranışa neden olur. Printf ("% s") 'i dizgi olmayan bir şeyle kullandınız, bu da tanımlanmamış davranışlara neden oluyor. –