私はmemmoveで遊んでいて、どのように動作するのか理解しています。しかし、最終結果に元のソースサイズよりも多くのものが含まれている場合は常に、一連の乱数が出力されます。たとえば:CのMemmove()が結果を2回出力します
char str[] = "abcdefgh";
memmove(str + 6, str + 3, 4);
printf("%s\n", str);
は私に他の文字がstrの中に加えられているなぜそれが私に abcdefdefg
を与える必要があり、出力abcdefdefgbdefggh
を与えますか?
バッファの最後を過ぎて書き込みました。これにより未定義の動作が発生します。あなたは 'printf("%s "'を文字列ではないもので使用しましたが、これも未定義の動作を引き起こします。 –