C语言 - 库函数memcpy、memmove、memset、memchr、memcmp

北城余情 提交于 2019-11-26 06:07:54

本文来源于网路,感谢网友分享

文章参考:https://www.cnblogs.com/kuihuayou/p/7307447.html

memcpy、memmove、memset、memchr、memcmp都是C语言中的库函数,在头文件string.h中。

                  memcpy和memmove的作用是拷贝一定长度的内存的内容,

                  memset用于缓冲区的填充工作,

                  memchr用于字符的查找工作,

                  memcmp用于比较内存中缓冲区的大小。

1.void * memcpy ( void * dest, const void * src, size_t num );

功能:将以src作为起始地址的数据复制num个字节到以dest为起始地址的数据中,不支持dest和src重叠的情况。函数返回dest指针。

2.void * memset ( void * ptr, int value, size_t num );

功能:将以ptr作为起始地址的数据的num个字节设置为value。函数返回destination指针

3.void * memmove ( void * dest, const void * source, size_t num );

功能:功能:将以source作为起始地址的数据的num个字节移动到以destination为起始地址的数据中,支持dest和src重叠的情况。函数返回dest指针。

4.int memcmp ( const void * ptr1, const void * ptr2, size_t num );

功能:比较以ptr1为起始地址数据和以ptr2为起始地址的数据的num个字节大小情况。如果num个字节都相等,则相等,函数返回0。从起始位置开始,如果某个字节大,则prt1>ptr2,函数返回正数,否则ptr<ptr2,函数返回负数。

memcmp 函数使用比较结构体时,注意在日常编码中,当一个结构体内不含有指针成员时,有时为了方便,我们会使用memcmp来对两个结构体进行比较,但是这种做法不是一个正确的方法,也可能会导致错误的比较结果

文章参考:https://blog.csdn.net/bajianxiaofendui/article/details/88563218

5.void * memchr (const void * ptr, int value, size_t num ); 

功能:在以ptr作为起始地址的数据中的num个字节中查找value,如果查到,则返回value所在的地址,否则返回NULL。

eg: 

        receive_flag = 0;
        memset(buffer, 0, BUFFER_SIZE);
        memcpy(buffer, receive_buffer, strlen(receive_buffer));
        memset(receive_buffer, 0, BUFFER_SIZE);

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!