当前位置: 首页 > 编程日记 > 正文

bzero, memset ,setmem 区别

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

相关文章:

了解这4个重点,带你探索未来将如何设计智能系统和机器人!

作者 | Himanshu Ragtah 译者 | 天道酬勤 责编 | 徐威龙 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; 到目前为止&#xff0c;为智能系统设计零件需要从头开始构建零件。从2D草图到可以根据给定的成本、材料和最大重量限制制造的可行且坚固的零件。这通常需要几天…

静态路由和默认路由的配置实例

RTA的配置&#xff1a;interface FastEthernet0/0ip address 1.1.1.2 255.255.255.252duplex autospeed auto!interface FastEthernet0/1no ip addressduplex autospeed autoshutdown!interface FastEthernet1/0ip address 10.10.10.1 255.255.255.0duplex autospeed auto!inte…

Centos运行级别和开机过程

一、Linux运行级别1&#xff09;0&#xff1a;关机2&#xff09;1&#xff1a;单用户3&#xff09;2&#xff1a;多用户状态没有网络服务4&#xff09;3&#xff1a;多用户状态有网络服务5&#xff09;4&#xff1a;系统未使用保留给用户6&#xff09;5&#xff1a;图形界面7&a…

PHP FPM设置

php-fpm启动 拷贝启用文件 # cp -R ./sapi/fpm/php-fpm /etc/init.d/php-fpm 启动 # /etc/init.d/php-fpm 重启 # killall php-fpm # /etc/init.d/php-fpm ------------------------ 进程不够就会起新&#xff0c;新的不能超过pm.max_children&#xff1b; 但是新的也会变为…

MySQL的binarylog处理

繁忙中測試新到的服務器&#xff0c;調試優化app&#xff0c;再加上月底公司搬家&#xff0c;很多配置都要更改。早上不經意telnet改dns的時候發現MySQL日誌很大了。。。 奇怪&#xff0c;我設置過的都改過了。。後來發現這台是子公司帶過來的機器。。。。以前那幾台都沒寫過配…

IJCAI 2020灭霸式拒稿,AI审稿是否更公平?

来源 | 数据派 THU编辑 | 文婧出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;一、IJCAI 2020灭霸式拒稿引众怒随着AAAI 2020于2月7日作为2020年人工智能学界的第一个顶会在美国纽约开幕&#xff0c;人工智能相关领域的研究者们又要为新一年的顶会忙碌了。对于AI界的…

ASP.NET MVC 中将FormCollection与实体间转换方法

http://blog.csdn.net/lutinghuan/article/details/8449296 将Action动作中传递的FormCollection转变成对应的实体&#xff0c;可以使用Controller的TryUpdateModel()方法。 示例如下&#xff1a; [csharp] view plaincopy [HttpPost] public ActionResult Create(FormCollect…

增量学习不只有finetune,三星AI提增量式少样本目标检测算法 | CVPR 2020

作者 | VincentLee来源 | 晓飞的算法工程笔记该论文研究了非常有意义的增量式少样本目标检测场景iFSD(Incremental Few-Shot Detection)&#xff0c;场景设置如下&#xff1a;检测模型可以在包含充足样本的基础类别上进行训练训练好后&#xff0c;iFSD能够应用到真实世界中&…

修改Linux内核参数提高服务器并发能力

1.参数设置 查看相关的参数 sysctl -a|grep tcp_keepalive net.ipv4.tcp_keepalive_intvl 30 net.ipv4.tcp_keepalive_probes 2 net.ipv4.tcp_keepalive_time 160 设置相关的参数 sysctl -w net.ipv4.tcp_keepalive_time 7500 也可以直接打开 # vim/etc/sysctl.conf 加入ne…

GPS小车移动应用程序

//用于desktop部署private void btnInitializeObjects_Click(object sender, System.EventArgs e){Catalog Cat MapInfo.Engine.Session.Current.Catalog; //创建临时层TableInfoMemTable tblInfoTemp new TableInfoMemTable("Animation");Table tblTemp Cat.GetT…

iOS网络-NSURLSessionDataTask大文件离线断点下载

什么叫离线断点下载,就是用户下载中关闭程序重新打开可以继续下载 代码实现如下: #import "ViewController.h" interface ViewController ()<NSURLSessionDataDelegate> //输出流 property (nonatomic, strong) NSOutputStream *stream ; //Task对象 property …

fcntl使用

1、获取文件的flags&#xff0c;即open函数的第二个参数: flags fcntl(fd,F_GETFL,0); 2、设置文件的flags: fcntl(fd,F_SETFL,flags); 3、增加文件的某个flags&#xff0c;比如文件是阻塞的&#xff0c;想设置成非阻塞: flags fcntl(fd,F_GETFL,0)…

两次关于软考网络工程师的经历

考过两次软考网络工程师&#xff0c;第一次没怎么准备&#xff0c;稀里糊涂参加考试&#xff0c;下午差几分&#xff1b;第二次痛定思痛&#xff0c;好好的分析了下试题&#xff0c;上午61&#xff0c;下午49&#xff0c;下午只写了30分钟左右&#xff0c;因为觉得自己过的了了…

“不会数学,干啥都不行!”骨灰级程序员:你方向不对,努力也白费!

最近半年来&#xff0c;我们收到了很多留言&#xff0c;有很多都是相似的问题&#xff1a;1&#xff09;数学不好搞编程好难&#xff0c;因为数据结构、编程语句、算法&#xff0c;核心原理都是数学。而且光会基础数学远远不够&#xff0c;还需要概率论&#xff0c;微积分、优化…

重新安装nginx注意事项

记得清理/etc/nginx/sites-enabled/default转载于:https://www.cnblogs.com/xiangnan/p/5146775.html

2020年,5种将死的编程语言

来源 | 码农网 译者 | 小峰曾几何时&#xff0c;几乎每个人都在使用Perl语言编程。但是那些经常使用的人慢慢地发现&#xff0c;关于这个Perl语言似乎总是有点不对劲。至少我知道有这么个叫做“piecemeal”的编程语言&#xff0c;它的创造者似乎就只是将这个功能堆在另一个功能…

关于 ulimit -SHn 65535

使用ulimit -a 可以查看当前系统的所有限制值&#xff0c;使用ulimit -n 可以查看当前的最大打开文件数。 新装的linux默认只有1024&#xff0c;当作负载较大的服务器时&#xff0c;很容易遇到error: too many open files。因此&#xff0c;需要将其改大。 使用 ulimit -n 65…

Could not load file or assembly App_Licenses.dll的问题

今天在AspDotNetStorefront做定制化开发&#xff0c;编译的时候莫名其妙地报告Could not load file or assembly App_Licenses, Version0.0.0.0, Cultureneutral, ... (Exception from HRESULT: 0x80070057 (E_INVALIDARG))的错误&#xff0c;检查文件系统&#xff0c;发现文件…

Docker 用法总结之:管理工具 shipyard 的具体使用指南

Docker 的命令行就已经非常好用了&#xff0c;假设非要加上基于 Web 的管理界面的话也有一些选择&#xff0c;如 DockerUI (Angular.js), Dockland (Ruby), Shipyard (Python/Django) 等。只是眼下来看 Shipyard 项目要活跃一点&#xff0c;Shipyard 支持多 host&#xff0c;能…

轻量级简单队列服务HTTPSQS安装与使用

原文地址&#xff1a;http://blog.s135.com/httpsqs 1.安装 wget http://httpsqs.googlecode.com/files/libevent-2.0.12-stable.tar.gz tar zxvf libevent-2.0.12-stable.tar.gz cd libevent-2.0.12-stable/ ./configure --prefix/usr/local/libevent-2.0.12-stable/ make…

GitHub移动端正式发布

整理 | 郭芮图源 | 视觉中国出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;在去年的 Universe 大会上&#xff0c;GitHub 推出了尚处于 Beta 阶段的移动版客户端&#xff08;GitHub for mobile&#xff09;&#xff0c;支持 iOS 和 Android 两大主流移动平台。时隔…

手机的定制化需求

根据自身的市场需求&#xff0c;文化环境&#xff0c;业务定位等诸多因素&#xff0c;运营商会对手机提出定制化要求&#xff0c;并指定相应的手机规范。随着差异化竞争和精益经营的不断提高&#xff0c;由运营商提出的手机规范也越来越复杂。据不完全统计&#xff08;图10-1&a…

oracle 9i 安装及连接远程数据库

用oracle 11g很久了&#xff0c;真的感觉是一个很重量级的客户端&#xff0c;安装都要一个多小时&#xff0c;最近刚开始接触这种精简版的数据库客户端&#xff0c;捣鼓了半天&#xff0c;总算成功。 1.下载客户端 2.安装 傻瓜式安装即可&#xff0c;记得自己的路径。 3.配置环…

FAST-CGI安装与使用

FastCGI 像是一个常驻 (long-live) 型的 CGI&#xff0c;它可以一直执行着&#xff0c;只要激活后&#xff0c;不会每次都要花费时间去 fork 一次 (这是 CGI 最为人诟病的 fork-and-execute 模式)。 1.下载安装fcgi # wget http://www.fastcgi.com/dist/fcgi.tar.gz # ta…

利用 JQuery的load函数动态加载页面

利用JQuery的load函数动态加载页面 JQuery有好多Ajax函数&#xff0c;其中load是用来动态加载一个页面的内容到指定的dom元素上。我们来做个例子&#xff1a;做一个上下&#xff08;左右&#xff09;结构的页面&#xff0c;其中下左部分放2个以前我们做过的div按钮&#xff0c…

教你用Android做二次开发,识别率达到科大讯飞语音输入水平 | 原力计划

作者 | Pek_KuaiJia责编 | 夕颜头图 | CSDN 下载自视觉中国出品 | CSDN&#xff08;ID:CSDNnews&#xff09;随着目前用户需求的精细化和智能化&#xff0c;很多时候我们需要在App内集成语音输入模块&#xff0c;为用户提供语音输入的功能。而科大讯飞语音作为行业内翘楚&#…

基于r-Kernel的LiteOS操作系统

LiteOS是应用于资源受限的传感网络的一种基于线程的类UNIX操作系统。也就是说它跑在存储空间和RAM有限的超低电压微控制器上&#xff0c;这也是吸引我关注它的原因&#xff08;在超低电压下系统更易出错&#xff09;。它採用r-kernel内核&#xff0c;r-kernel有三个特征&#x…

Linux网络编程中的几组类似功能的区别

1.bzero与memset char buff[1024]; memset(buff,0,sizeof(buff));bzero(buff, sizeof(buff)); struct sockaddr_in addr memset(&addr, 0, sizeof(addr)); bzero(buff, sizeof(buff)); 参考《UNIX网络编程 卷1&#xff1a;套接字联网API 第3版》1.2的解释&#xff1a…

5个案例让Python输出漂亮的表格!

来源 | Python数据之道前言最近在用python写一个小工具&#xff0c;这个工具主要就是用来管理各种资源的信息&#xff0c;比如阿里云的ECS等信息&#xff0c;因为我工作的电脑使用的是LINUX&#xff0c;所以就想着用 Python写一个命令行的管理工具&#xff0c;基本的功能就是同…

VS2010正式版MSDN下载

之前写了一篇关于微软VS2010发布会的介绍&#xff0c;现在VS2010的正式版也叫RTM版本终于在MSDN开始提高下载了&#xff0c;暂时性的还只有英文版本&#xff0c;不过等等马上应该会有中文的了。 VS2010 RTM下载地址 Microsoft Visual Studio 2010 Premium - ISOMicrosoft Visua…