收集的一些基本函数实现手法,备忘~~
memcpy
strncpy
strcpy
FreeBSD中strcpy
OpenBSD 3.9中strcpy
:-)
memcpy
/**
* memcpy - Copy one area of memory to another
* @dest: Where to copy to
* @src: Where to copy from
* @count: The size of the area.
*
* You should not use this function to access IO space, use memcpy_toio()
* or memcpy_fromio() instead.
*/
void * memcpy(void * dest,const void *src,size_t count)
{
char *tmp = (char *) dest, *s = (char *) src;
while (count--)
*tmp++ = *s++;
return dest;
}strncpy
/**
* strncpy - Copy a length-limited, %NUL-terminated string
* @dest: Where to copy the string to
* @src: Where to copy the string from
* @count: The maximum number of bytes to copy
*
* Note that unlike userspace strncpy, this does not %NUL-pad the buffer.
* However, the result is not %NUL-terminated if the source exceeds
* @count bytes.
*/
char * strncpy(char * dest,const char *src,size_t count)
{
char *tmp = dest;
while (count-- && (*dest++ = *src++) != '\0')
/* nothing */;
return tmp;
}strcpy
/**
* strcpy - Copy a %NUL terminated string
* @dest: Where to copy the string to
* @src: Where to copy the string from
*/
char * strcpy(char * dest,const char *src)
{
char *tmp = dest;
while ((*dest++ = *src++) != '\0')
/* nothing */;
return tmp;
}FreeBSD中strcpy
char *strcpy(char * __restrict to, const char * __restrict from)
{
char *save = to;
for (; (*to = *from); ++from, ++to);
return(save);
}OpenBSD 3.9中strcpy
char *strcpy(char *to, const char *from)
{
char *save = to;
for (; (*to = *from) != ''; ++from, ++to);
return(save);
}:-)
本文详细介绍了几种常用的字符串操作函数,包括memcpy、strncpy、strcpy等,并提供了不同操作系统下的实现示例。通过这些示例,读者可以了解到如何在C语言中进行字符串的复制,并注意到不同函数在处理边界情况时的行为差异。
368

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



