strcpy
char *strcpy(char*strDest, const char *strSrc)
{
assert((strDest!=NULL) && (strSrc!=NULL));
char *address = strDest;
while( (*strDest++ = * strSrc++) != '\0')
NULL ;
return address ;
}
memmove
void *memmove(void *dst, const void*src, size_tcount)
{
void* ret = dst;
if(dst <= src || (char *)dst >= ((char *)src + count)) {//不重叠或,拷贝不覆盖还未读的src
while (count--) {
*(char *)dst = *(char *)src;
dst = (char *)dst + 1;
src = (char *)src + 1;
}
}
else{//逆向拷贝
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);
}memcpy
和strcpy一样
void *memcpy(void*pvTo, void* pvFrom, size_t size) //byte是java里的变量类型
{
void * ret = dst;
while (count--) {
*(char *)dst = *(char *)src;
dst = (char *)dst + 1;
src = (char *)src + 1;
}
return(ret);
}memset
void* memset(void* buffer, int c, int count)
{
char* pvTo=(char*)buffer;
assert(buffer != NULL);
while(count-->0)
*pvTo++=(char)c;
return buffer;
}
strncpy
char * strncpy (char * dest,const char * source,size_tcount)
{
char *start = dest;
while (count && (*dest++ =*source++)) /* copy string */
count--;
if (count) /* pad out with zeroes */
while (--count)
*dest++ = '\0';
return(start);
}
本文详细介绍了C语言中常用的字符串操作函数,包括strcpy、memmove、memcpy、memset和strncpy等。解析了每个函数的功能及其实现原理,并通过具体的代码示例帮助读者更好地理解这些函数的使用方法。
5684

被折叠的 条评论
为什么被折叠?



