题目一:
用C语言实现一个revert函数,它的功能是将输入的字符串在原串上倒序后返回。
Answer1:
char *revert(char * str)
{
int n=strlen(str);
int i=0;
char c;
for(i=0;i<n/2;i++)
{
c=str;
str[i]=str[n-i];
str[n-i]=c;
}
return str;
}
题目二:
用C语言实现函数void * memmove(void *dest,const void *src,size_t n)。memmove
函数的功能是拷贝src所指的内存内容前n个字节到dest所指的地址上.
Answer1:
http://topic.youkuaiyun.com/u/20070426/09/39b1b988-dc65-4916-8de6-ec91eef610a0.html
贴个VC下的源码看看:
void * __cdecl memmove (void*dst, const void * src, size_t count)
{
void * ret = dst;
if (dst <= src || (char *)dst > = ((char *)src + count))
{
/*
* Non-Overlapping Buffers
* copy from lower addresses to higher addresses
*/
while (count--) {
*(char *)dst = *(char *)src;
dst = (char *)dst + 1;
src = (char *)src + 1;
}
}
else {
/*
* Overlapping Buffers
* copy from higher addresses to lower addresses
*/
dst = (char *)dst + count - 1;
src = (char *)src + count - 1;
while (count--)
{
*(char *)dst = *(char *)src;
dst = (char *)dst - 1;
src = (char *)src - 1;
}
}
return(ret);
}