これは素晴らしい場所のようです。私の質問は、memmove()のこの実装でどのような価値(または何バイト)が動いているのでしょうか?C - memmove()関数 - この実装では何バイト移動しますか?
int main()
{
char str[] = "memmove can be very useful......";
memmove (str+15,str+20,/*?*/);
puts (str);
return 0;
}
次の例では、11バイト移動しています。しかし、それは11バイトになるのですか?誰かが説明できますか?
int main()
{
char str[] = "memmove can be very useful......";
memmove (str+20,str+15,11); //source and destination are reversed
puts (str);
return 0;
}
ありがとうございます!
編集:BTW、文字列の長さは、終端ヌル文字を含む33です。
'int main()'は 'int main(void)'でなければなりません。もっと重要なことに、 '#include'と '#include 'が必要です。あなたのコンパイラがこれについてあなたに警告しなかった場合は、警告レベルまでクランクを上げてください。 –
私たちが見せているのは「memmove()」の実装ではなく、単にmemmove()を呼び出すプログラムです。 'memmove()'の*実装*は、実際にバイトをコピーするランタイムライブラリのコードになります。 –
11は11バイトにします。ダー。最初の例では、/ *?* /の代わりに数字を置くまで何も移動していません。あなたはstrcpyとmemmoveを混同していますか? –