对于字符串操作的函数声明是在头文件 <string.h>内,在编程中需要使用如下方式来引进:
#include <string.h>
1) void * memcpy(void* dest, const void* src, size_t n)
说明: 此函数功能为字符串内存拷贝,src为源字符,dest为目的字符串,拷贝的长度为n,调用此函数需用户保证src,dest所指向的长度为n的内存区域没有重合部分
源码: void * memcpy(void* dest, const void* src, size_t n)
{
unsigned char* d;
const unsigned char* s;
for(d=dest, s=src; ++d, ++s, --n)
{
*d = *s;
}
return dest;
}
2) void * memmove(void*dest, void* src, size_t n)
说明: 此函数功能为字符串内存拷贝,src为源字符,dest为目的字符串,拷贝的长度为n,支持src,dest所指向的长度为n的内存区域有重合部分
源码:void * memmove(void*dest, void* src, size_t n)
{
unsigned char* d;
const unsigned char* s;
if (src < dest && dest < src+n)
{
for(d += n;,s+=n; n>0; --n)
{
*--d = *--s;
}
}
else
{
for(; n>0; --n)
{
*d++ = *s++;
}
}
return dest;
}
3) char* strcpy(char* dest, const char* src)
说明:函数快速执行把src字符串内容复制到dest中,调用需保证src、dest没有重合部分,如有重合部分需要使用 memmove(dest, src, strlen(src)+1)来代替
源码:char* strcpy(char* dest, const char* src)
{
char* d = dest;
if (dest == NULL || src == NULL) return NULL; // 此语句在C函数库源码中没有,c语言中对空指针做读写操作会导致程序core dump,此操作应该是被禁止的
while((*dest++ = *src++) != '\0') ;
return dest;
}