bzero  
原型:extern void bzero(void *s, int n);
用法:#include <string.h>

功能:置字节字符串s的前n个字节为零。    
说明:bzero无返回值。    
举例:       // bzero.c            
       #include <syslib.h>
       #include <string.h>
       int main()
       {
                struct
                {
                      int a;
                      char s[5];
                      float f;
                } tt;
                char s[20];
                bzero(&tt,sizeof(tt));   // struct initialization to zero       bzero(s,20);
                clrscr();
                printf("Initail Success");
                getchar();
                return 0;
        }

========================================
memset  
原型:

extern void *memset(void *buffer, int c, int count);
用法:#include <string.h>

功能:把buffer所指内存区域的前count个字节设置成字符c。    
说明:返回指向buffer的指针。    
举例:       // memset.c
       #include <syslib.h>
       #include <string.h>
       int main()
       {
           char *s="Golden Global View";
            clrscr();
           memset(s,'G',6);
           printf("%s",s);
           getchar();
            return 0;
        }

=======================================
setmem  
原型:

extern void setmem(void *buf, unsigned int count, char ch);          
用法:#include <string.h>

功能:把buf所指内存区域前count个字节设置成字符ch。    
说明:返回指向buf的指针。    
举例:       // setmem.c
       #include <syslib.h>
       #include <string.h>
       int main()
       {
            char *s="Golden Global View";
           clrscr();
           setmem(s,6,'G');
          printf("%s",s);
            getchar();
          return 0;
        }
=======================================

综述:
bcopy和memcpy、
bzero和memset、bcmp和memcmp的差别在哪里?
bcopy、bzero和bcmp是传统BSD的函数,属于POSIX标准;mem*是C90(以及C99)标准的C函数。区别在于,如果你打算把程序弄到一个符合C90/C99,但是不符合POSIX标准的平台时,后者比较有优势。

NetBSD的代码中有很多地方使用mem*(他们更偏爱mem*,以利于移植),即使内核也是如此,而FreeBSD的内核中则尽量避免使用(希望尽可能避免在内核中出现较多的C函数)。如果你提交代码的话需要注意这些约定。

在memset和bzero初始化数据间,我很多时候选择bzero, memset的一个缺点是第二个参数和第三个参数需要记忆,需要记住哪个是值和哪个是大小(如果不想查手册的话), 不可以弄错。

bzero()和memset()
今天用到一个字符数组初始化函数,bzero(),因为比较生疏,于是在查本地的一个C/C++函数库的时候并未见此函数,于是便觉得自己拥有的CHM版的库函数软件包有点山寨了,可是当自己调试程序的时候却发现此函数始终通不过编译。被逼上网查它们的区别,得答案如下:

C has memset(), the Berkeley UNIX C library has bzero(). They are not
identical, and bzero() pre dates memset() but is not widely available (since
it's not part of standard C).
     在LINUX平台上是支持bzero的,但是其并不在ANSI C中定义,也就是不属于C的库函数.

==========================================================================

From CSDN

【问】网上查了是
#include <string.h>
但是在vc6.0 和vs2005下还是报错,说bzero没有定义

【答】确实没有

可以自己定义一个

C/C++ code #define bzero(a, b)             memset(a, 0, b)

bzero()是在linux平台下用的,可以用memset()函数代替,这样就跨平台了。哈哈...
实在要用就像楼上说的那样。

原文地址:http://hi.baidu.com/lovelyhuhu/item/2b202ac92838b52d47d5c051

bzero, memset ,setmem 区别相关推荐

  1. bzero, memset ,setmem 区别【转】

    本文转载自:http://chang6520.blog.163.com/blog/static/112665875201302843359715/ bzero  原型: extern void bze ...

  2. c语言 bzero,bzero, memset ,setmem 区别(示例代码)

    bzero 原型: extern void bzero(void *s, int n); 用法: #include 功能:置字节字符串s的前n个字节为零. 说明:bzero无返回值. 举例: // b ...

  3. memset 用法 linux,bzero, memset ,setmem 区别

    bzero 原型:extern void bzero(void *s, int n); 用法:#include 功能:置字节字符串s的前n个字节为零. 说明:bzero无返回值. 举例:       ...

  4. bzero 和memset的区别

    bzero 原型:extern void bzero(void *s, int n); 用法:#include <string.h> 功能:置字节字符串s的前n个字节为零且包括'\0'. ...

  5. bzero memset置零的性能比较

    关于字符数组的初始化,在项目的压力测试中,发现性能明显下降,变怀疑在程序中的若干临时字符数组的初始化(使用bzero)身上.于是修改为首个字符置 零的方式而非全部置零的方式初始化,响应得到明显的提升. ...

  6. bzero和memset函数区别联系

    bzero函数 函数原型:void bzero(void *s, int n): 头文件:#include <string.h> 功能:将字符串s的前n个字节置为0,一般来说n通常取siz ...

  7. strcpy、memcpy和memset的区别

    strcpy 原型:extern char *strcpy(char *dest,char *src); 用法:#include <string.h> 功能:把src所指由NULL结束的字 ...

  8. bzero()与 memset()等的区别

    BZERO()等的区别 bzero   原型: extern void  bzero(void *s, int n); 用法: #include <string.h> 功能:置字节字符串s ...

  9. ZeroMemory、memset 和 “={0}” 三者区别

    ZeroMemory.memset 和 "={0}" 三者用于清零操作的区别: 首先是ZeroMemory和memset的区别: 1.ZeroMemory是微软的SDK提供的,me ...

最新文章

  1. TranslateMessage()的困惑
  2. 简(kun)单(nan)到让我开(jue)心(wang)的后缀自动机全家桶(普通后缀、广义后缀、子序列)...
  3. DLL劫持的发展历程
  4. colab中的在Github中保存一份副本无法保存到自己github
  5. 2600: [Ioi2011]ricehubh
  6. ffmpeg实战教程(二)用SDL播放YUV,并结合ffmpeg实现简易播放器
  7. Windows Server 2012配置开机启动项
  8. yconsole使用说明
  9. java odjc ResultSet 的使用详解
  10. Spring Boot (30) 上传文件
  11. 转载一篇写的简单易懂的lvs用法
  12. 基于scrapy-splash进行单页应用网站seo处理
  13. java套接字通信_Java网络通信套接字 | 学步园
  14. Github上十大C#开源项目排行榜
  15. python中printf的用法_python输出语句print的用法是什么?
  16. 模式识别之特征提取算法
  17. 三相桥式全控整流电路simulink仿真_三相二极管桥式整流电路分析与仿真
  18. DVWA--SQL Injection(SQL注入-非盲注)(全难度)
  19. 安装python发生的报错
  20. 撤销Excel表格保护

热门文章

  1. Linux下视频截取命令
  2. F-LOAM:基于激光雷达的快速里程计和建图
  3. PDAL点云处理库介绍
  4. 只需三分钟您就可以用nodejs搭建静态网页服务器(配置静态网页访问目录)
  5. 在Ubuntu 14.04 64bit上安装redis 3.0.3
  6. 中体骏彩C++面试题
  7. 搜索:深搜/广搜 获取岛屿数量
  8. 二叉树:最近的公共祖先 Lowest Common Ancestor of a Binary Tree
  9. C语言网络编程:socket函数
  10. 你真的了解Grid布局吗?