【发布时间】:2011-10-29 02:16:38
【问题描述】:
这似乎是个好地方。我的问题是,我在 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)。更重要的是,您需要#include <stdio.h>和#include <string.h>。如果您的编译器没有对此发出警告,请提高其警告级别,直到发出警告为止。 -
您向我们展示的不是“memmove() 的实现”,它只是一个调用
memmove()的程序。memmove()的实现将是运行时库中实际复制字节的代码。 -
11 变成 11 个字节。呃。在第一个示例中,您不会移动任何东西,直到您将数字代替 /*?*/。您是否将 memmove 与 strcpy 混淆了?