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

c语言 bzero,bzero, memset ,setmem 区别(示例代码)bzero 原型 externvoidbz void s intn 用法 include 功能 置字节字符串 s 的前 n 个字节为零 说明 bzero 无返回值 举例 bzero c include includeintma struct inta chars 5 floatf tt chars 20 bzero amp tt sizeof t

bzero

原型: extern void bzero(void *s, int n);

用法: #include

功能:置字节字符串s的前n个字节为零。

说明:bzero无返回值。

举例: // bzero.c

#include

#include

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

功能:把buffer所指内存区域的前count个字节设置成字符c。

说明:返回指向buffer的指针。

举例: // memset.c

#include

#include

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

功能:把buf所指内存区域前count个字节设置成字符ch。

说明:返回指向buf的指针。

举例: // setmem.c

#include

#include

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

但是在vc6.0 和vs2005下还是报错,说bzero没有定义

【答】确实没有

可以自己定义一个

C/C++ code

#define bzero(a, b) memset(a, 0, b)

bzero()是在linux平台下用的,可以用memset()函数代替,这样就跨平台了。哈哈…

实在要用就像楼上说的那样。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/218543.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午7:00
下一篇 2026年3月18日 上午7:00


相关推荐

  • Pycharm设置解释器「建议收藏」

    Pycharm设置解释器「建议收藏」背景:最近需要改文章,增加实验,要把之前的实验跑起来。其间,遇到一个很诡异的问题,在一个工程里跑得很正常的程序,到了另外一个工程里,相似的文件,只是修改了一点参数而已,就会报错,如ModuleNotFoundError:Nomodulenamed’tensorflow.contrib.slim’,当时就怀疑是不是解释器设置问题。由于当时夜黑风高,困意来袭,解释器位置设置竟然也找不到,作罢。第二天直接复制粘贴找问题原因无果。问题:果然是解释器设置问题。默认的解释器是base的python环境,由.

    2022年8月25日
    8
  • tree命令使用

    tree命令使用aliastree=”find.-print|sed-e’s;[^/]*/;|____;g;s;____|;|;g'”

    2022年7月24日
    13
  • c语言实现贪吃蛇教程

    c语言实现贪吃蛇教程效果图如图 nbsp 首先发现组成元素是 实心方块 我们可以百度也可以在我这里直接复制 进编译环境 这个方块是两个字节这个很重要 完成这个小程序基本上我们分以下几步 1 完成所有静态的元素 四周的方块界线 2 绘制蛇 3 使蛇吃东西 nbsp 下面分布进行实现首先完成第一步

    2025年11月30日
    5
  • j2EE是什么_J2EE全称

    j2EE是什么_J2EE全称本文简单的介绍了一下J2EE的一些基本知识,下次我们将继续学习J2EE的架构以及API等其他知识。也许我们现在对这些东西都不是很熟悉,但是随着我们的学习深入,这些东西都会理解的。

    2022年10月11日
    4
  • H2数据库入门_H2数据库越来越大

    H2数据库入门_H2数据库越来越大一、H2简介  1、H2是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。  H2最大的用途在于可以同应用程序打包在一起发布,这样可以非常方便地存储少量结构化数据。  它的另一个用途是用于单元测试。启动速度快,而且可以关闭持久化功能,每一个用例执行完随即还原到初始状态。  H2的第三个用处是作为缓存,作为NoSQL的一个补充。当某些场景下数据模型必须为关系型…

    2022年10月12日
    4
  • 报告上集 | 《认文识字·中文字信息精准化》报告「建议收藏」

    您好,欢迎关注《认文识字——中文字信息精准化》报告。我是安秀。这里说的“中文字”,是“中国文字”的简称,也就是我们常说的“汉字”。【认文识字】是以“中文字信息精准化”为导向,而沉淀出的一整个“从文到字”脉络关系大网和相应的信息数据。今天发表出来,跟您分享。壹○中文字信息精准化研究与分享中文字,是人类文明进程的全息存储;同时,也是人类智能的载体之一。它以多维多元的编码方式,将人脑多维智力运行过程、全息呈现。使用【认文识字】的信息数据,可以在包括人工智能领域的各行各业各领域中,做

    2022年4月7日
    46

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号