`
anders0913
  • 浏览: 90802 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

memcpy, strncpy, 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);
}




:-)



分享到:
评论

相关推荐

    安全函数strcpy_s、strncpy_s、snprintf_s、memcpy_s

    传统的C语言函数如`strcpy`, `strncpy`, `sprintf`, 和 `memcpy`虽然功能强大,但它们缺乏对缓冲区溢出的安全检查,这可能导致严重的安全漏洞。为了解决这个问题,C标准库引入了安全版本的这些函数,例如`strcpy_s`,...

    25_strcpy_strncpy_memcpy的区别1

    在C/C++编程中,字符串处理是至关重要的,其中`strcpy`、`strncpy`和`memcpy`都是用于复制内存区域的函数,但它们在使用和功能上有所不同,特别是涉及到安全性和内存管理方面。 首先,`strcpy`函数是用于复制字符串...

    深入理解strcpy与memcpy的区别

    在实际编程中,为了防止溢出,可以考虑使用`strncpy`作为`strcpy`的替代,因为它允许指定最大复制的字符数。同样,如果要复制包含嵌入零字节的数据,`memcpy`是更好的选择,因为它不关心数据内容,仅按字节复制。 ...

    strcpy与memcpy的区别-.docx

    在C语言和C++中,`strcpy`和`memcpy`都是用于复制内存...为了提高安全性,推荐使用`strncpy`或`strcpy_s`(在Windows平台上)这样的安全版本函数,或者使用C++的`std::string`类,它们通常能更好地防止缓冲区溢出问题。

    strcpy与memcpy的区别-.pdf

    同时,为了防止缓冲区溢出,使用strcpy时需要确保目标字符串有足够的空间容纳源字符串,或者可以使用更安全的strncpy函数,它允许指定目标字符串的最大长度。 总结起来,strcpy和memcpy都是C语言中重要的内存复制...

    C语言 strcpy和memcpy区别详细介绍

    C语言 strcpy和memcpy区别详细介绍 PS:初学算法,开始刷leetcode,Rotate array的预备知识(写的代码Time Limit Exceed难过)于是百度高效算法,本篇作为预备知识。 1、strcpy和strncpy函数 这个不陌生,大一学...

    【字符串函数】strcpy的使用及原理

    在C语言中,`strcpy`是一个非常基础且重要的字符串处理函数,它用于复制一个字符串到另一个字符串中。...在实际编程中,通常推荐使用更安全的替代方案,如`strncpy`或`memcpy`,以确保程序的健壮性。

    自己总结的c基础知识

    本文将重点讨论字符串、`getchar()`函数以及`strcpy`、`strncpy`和`memcpy`这三个常用的内存拷贝函数。 首先,让我们来理解一下C语言中的字符串。在C语言中,字符串是由一系列字符组成的,以空字符`\0`作为结束标记...

    c语言字符串操作(包括字符串各种操作)

    1. 字符串拷贝:strcpy()和memcpy() strcpy()函数只能拷贝字符串。strcpy()函数将源字符串的每个字节拷贝到目录字符串中,当遇到字符串末尾的null字符(\0)时,它会删去该字符,并结束拷贝。 memcpy()函数可以拷贝...

    strcpy函数实现简示例命分享

    - **内存安全**:在实际编程中,为了保证内存安全,通常会使用`memcpy`函数代替`strcpy`来复制包含非字符串的数据结构,因为`memcpy`不关心源和目标字符串的结束符,而是根据提供的长度进行复制。 总的来说,`...

    Linux+C语言+内存越界问题总结[文].pdf

    2. strncpy strcpy 目的缓冲区的大小及源缓冲区是否以\0 结尾 3. 还要注意数组的大小、循环的次数 4. 链表的头部和尾部在处理插入和删除节点时的操作 解决内存越界的问题 为了解决内存越界的问题,可以使用 ...

    浅谈linux c编程中的拷贝函数.docx

    本文将重点探讨三个常见的拷贝函数:strcpy、strncpy以及memcpy,并分析它们的使用细节和潜在的风险。 首先,`strcpy`函数是最基础的字符串拷贝函数,它将源字符串的内容复制到目标字符串中。然而,`strcpy`并不...

    自己总结的面试题字符串

    本文将深入探讨`memset`、`strcpy`、`memcpy`以及`memmove`这四个函数的使用和区别。 首先,`memset`函数用于填充内存。它的原型是`void *memset(void *buffer, char c, int count)`,接受一个内存缓冲区的指针`...

    C/C++面试之算法系列--几个典型的内存拷贝及字符串函数实现

    #### 三、字符串拷贝函数:`memcpy`、`strcpy`与`strncpy` 除了基本的内存拷贝`memcpy`外,C/C++还提供了专门针对字符串拷贝的函数`strcpy`和`strncpy`。 1. **`memcpy`实现**(已讨论) 2. **`strcpy`实现**: ...

    C++常用库函数

    与`strcpy()`不同,`memcpy()`不会因遇到字符串结束符`\0`而停止,因此它可以用于任何类型的数据拷贝,不仅仅是字符串。例如,在需要复制字符串"wangyucao1989"中的"yucao"时,可以使用`memcpy(newstr, str+4, 5)`,...

    综合企业笔试题_嵌入式-常用知识&面试题库_大厂面试真题.docx

    字符串拷贝函数是将一个字符串拷贝到另一个字符串中,常用的函数有 strcpy、strncpy、memcpy 等。strcpy 函数将源字符串拷贝到目标字符串中,直到遇到nul 字符为止。strncpy 函数将源字符串的前 n 个字符拷贝到目标...

    C/C++字符串函数之复制函数详解

    本文将详细解析四种主要的字符串复制函数:`strcpy`、`strncpy`、`memcpy`以及`memmove`,帮助开发者更好地理解和使用这些函数。 1. `strcpy` 函数: `strcpy` 函数用于将源字符串(由`source`指向)完全复制到目标...

    将一个字符串循环右移的三种方法

    这里使用了`memmove()`函数,它和`memcpy()`类似,但当源和目标区域有重叠时,`memmove()`可以正确处理,而`memcpy()`则可能导致未定义的行为。 以上就是三种实现字符串循环右移的方法。每种方法都有其特点:第一种...

    一个C语言常用字符串操作函数库.zip

    例如,了解何时使用`strncpy()`而非`strcpy()`,以及如何防止`strcat()`和`strcpy()`导致的缓冲区溢出,都是C语言程序员的基本技能。 这个资源包"my_resource"可能包含了这些函数的实例、练习和解释,对于初学者来...

Global site tag (gtag.js) - Google Analytics