怎么用memset清空字符数组?

假如a[]="IloveChina",如何用menset来清空a。(是清空不是清零)是用:memset(a,0,sizeof(a));还是:memset(a,'\0',s... 假如a[]="I love China",如何用menset来清空a 。 (是清空不是清零)
是用:memset(a, 0, sizeof(a));
还是:memset(a, '\0', sizeof(a));

还有a[0]='\0' ,可以清空a吗?
谢谢!
展开
 我来答
小鱼1979117
推荐于2018-02-27 · TA获得超过1.1万个赞
知道大有可为答主
回答量:1905
采纳率:0%
帮助的人:1121万
展开全部
两个memset都行。因为0和'\0'等价。

需要注意的是a必须是定义成char a[] = "xxxxxx"这样而不能是char *a = "xxxxxx"。
否则,sizeof(a)后者就是一个指针的大小也就是4了。
a[0] = '\0'只能是在a的第一个字符的位置上写一个0,也就是字符串的结束符而已。
实际上自a[1]开始后面还都是有数据的。
如果从相对意义上说只要控制正确就行,从绝对的“清空”角度不能算清空。
必须使用你写的两个memset才可以。

希望有用。
du瓶邪
推荐于2016-07-09 · TA获得超过2.4万个赞
知道大有可为答主
回答量:1.7万
采纳率:100%
帮助的人:2966万
展开全部
所谓清空数组,是要清空每个元素;清空字符串是将字符串置为空,这两个要求有异。
清空数组:char a[100]; int i; for ( i=0;i<100;i++ ) a[i]=0;
清空字符串:char a[100]; a[0]=0; //或a[0]='\0';
因为字符串以0结束,你只要将字符串数组第1个字符设置为0值即算清空了字符串。
存放字符串的字符数组就是你说的字符串数组,只不过说明这个字符型数组是用于存放字符串的而已,官方可没有这个说法,只要字符型数组一说。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
LaceTao
2011-04-21 · TA获得超过348个赞
知道答主
回答量:227
采纳率:0%
帮助的人:259万
展开全部
memset是设置内存的值,memset(a, 0, sizeof(a))就是将数组a的每个位置都设置为0,相当于循环的a[i]='0',memset(a, '\0', sizeof(a))可以算是清空,因为所有的c字符串都是以'\0'结尾的,设置成了'\0'也就相当于清空了。 a[0]='\0'可以清空a,你可以设置后,调用strlen(a)看看长度是多少啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
陈冠钢
2011-04-21 · TA获得超过274个赞
知道小有建树答主
回答量:269
采纳率:87%
帮助的人:223万
展开全部
用memset(a,0,strlen(a)); //strlen(a)检测字符串长度
a[0]='\0'; 不能清空,仅是把第0个元素置为'\0',用printf输出为空而已。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式