這似乎是一個很好的地方。我的問題是,我在這個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;
}
謝謝!
編輯:順便說一句,字符串的長度是33,包括終止空字符。
'int main()'應該是'int main(void)'。更重要的是,你需要'#包括'和'#包括'。如果你的編譯器沒有提醒你這個問題,請提高它的警告級別,直到它發生。 –
你給我們展示的不是「memmove()的實現」,它只是一個調用'memmove()'的程序。 'memmove()'的*實現將是運行時庫中的代碼,它實際上是複製字節的。 –
11使它11個字節。咄。在第一個例子中,除非您將一個數字替換爲/ *?* /,否則不會移動任何內容。你用strcpy混淆了memmove嗎? –