让你提前认识软件开发(8):memset()与memcpy()函数

第1部分 重新认识C语言

memset()与memcpy()函数

 

        软件项目中的代码,少则数千行,多则上万行,但并非无规律可循。阅读了那么多代码之后,我发现有两个函数出现的频率很高,那就是memset()memcpy()函数,它们都是C语言编程中经常要用到的。工作之余,我查了一些资料,现对它们作一个简单的说明。

        1. memset()函数

        (1)函数原型

        void *memset( void *dest, int c, size_t count )

        (2)函数作用

        在MSDN中,将该函数的作用描述为:Sets buffers to a specified character,即:将缓存设定为一个专门的字符。简单地说,就是将已开辟内存空间dest的首count个字节的值设为值c

        (3)应用举例

/***************************************************************

*版权所有 (C)2014, Zhou Zhaoxiong

*

*文件名称:memset.c

*内容摘要:用于测试memset函数

*其它说明:无

*当前版本:V1.0

*   者:周兆熊

*完成日期:20140329

*

*修改记录1   //修改历史记录,包括修改日期、版本号、修改人及修改内容等

*   修改日期:

*   版本号:

*   修改人:

*   修改内容:

***************************************************************/

 

#include <memory.h>

#include <stdio.h>

 

typedef signed char INT8;                       //重定义数据类型

typedef signed int  INT32;                     //重定义数据类型

 

/**********************************************************************

 *功能描述:主函数

 *输入参数:无

 *输出参数:无

 *返回值:无

 *其它说明:无

 *修改日期           版本号          修改人        修改内容

 * ------------------------------------------------------------------------------------------------------

 * 20140329            V1.0            周兆熊          创建

 ***********************************************************************/

INT32 main(void)

{

    INT8 szTestStr[100] = "AAAAAAAAAA";

      

    printf("The original string is: %s\n", szTestStr);

      

    memset(szTestStr, 'B', 5);     //调用memset函数

      

    printf("The changed string is: %s\n", szTestStr);

 

    return 0;

}

       该程序的输出结果为:

 

       (4)重要应用

       除了对指定位置设定值之外,该函数还可以用于内存空间初始化内存拷贝清空一个结构类型的变量或数组等。

 

       2. memcpy()函数

       (1)函数原型

       void *memcpy( void *dest, const void *src, size_t count )

       (2)函数作用

       在MSDN中,将该函数的作用描述为:Copies characters between buffers,即:在缓存之间拷贝字符。也就是说,该函数用来拷贝src所指的内存内容前count个字节到dest所指的内存地址上

       (3)应用举例

/***************************************************************

*版权所有 (C)2014, Zhou Zhaoxiong

*

*文件名称:memcpy.c

*内容摘要:用于测试memcpy函数

*其它说明:无

*当前版本:V1.0

*   者:周兆熊

*完成日期:20140329

*

*修改记录1   //修改历史记录,包括修改日期、版本号、修改人及修改内容等

*   修改日期:

*   版本号:

*   修改人:

*   修改内容:

***************************************************************/

 

#include <memory.h>

#include <stdio.h>

 

 

typedef signed char INT8;                       //重定义数据类型

typedef signed int  INT32;                     //重定义数据类型

 

/**********************************************************************

 *功能描述:主函数

 *输入参数:无

 *输出参数:无

 *返回值:无

 *其它说明:无

 *修改日期           版本号          修改人        修改内容

 * ------------------------------------------------------------------------------------------------------

 * 20140329            V1.0            周兆熊          创建

 ***********************************************************************/

INT32 main(void)

{

    INT8 szTestStr[100] = "AAAAAAAAAA";

    INT8 szCopyStr[100] = "BBBBBBBBBB";

      

    printf("The original string is: %s\n", szTestStr);

      

    memcpy(szTestStr+1, szCopyStr+5, 3);     //调用memcpy函数

      

    printf("The changed string is: %s\n", szTestStr);

 

   return 0;

}

 

       该程序的输出结果为:

 

       (4)重要说明

       srcdest所指内存区域不能重叠,函数返回指向dest的指针

 

 

 

(欢迎访问南邮BBS:http://bbs.njupt.edu.cn/)
(欢迎访问重邮BBS:http://bbs.cqupt.edu.cn/nForum/index)

(本系列文章每周更新两篇,敬请期待!本人新浪微博:http://weibo.com/zhouzxi?topnav=1&wvr=5,微信号:245924426,欢迎关注!)

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知识的港湾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值