开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
Linux
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
NO
问题(Question):
请问如何清空已存的字符阵列?
char num[5];
喂入的资料(Input):
过程中会 num[0]=1;
num[1]=2;
num[2]=1;
但是下一次希望可以只存'3'在字符阵列里
目前只想到用一个
for(i=0;i<3;i++){
num[i]='\0';
}
来达成目的
想要请问有没有其他办法,可以清空已存部分资料的字符阵列
谢谢
作者:
AIGecko (师大猫耳控)
2014-05-07 23:01:00memset
作者:
pcyu16 (._.?)
2014-05-07 23:08:00已解答 XD
作者:
s25g5d4 (function(){})()
2014-05-08 09:21:00记得 #include <string.h>
我有个小问题,为什么要清空?普通的做法是放一个marker来标示“这个地方往后到阵列终点皆为零”,跟C-Stylestring是完全一样的道理(marker用\0即可)memset在某些情况下是一个非常昂贵的操作(尤其是mmap下你无法得知fd的消除成本),我会建议尽可能不要用这种粗暴的方式来操作会比较好一点。当然普通内存来讲,memset是很便宜的。不过如果要达到你说的效果的话 memset是对的 只是正常设计来讲,需要这种raw erase的机会真的不算太多
作者:
pcyu16 (._.?)
2014-05-08 21:11:00其实感觉问题的描述中到底是存数字还是字符不太清楚变量命名跟资料型态或许也还有可以讨论的地方不过这些都是内文没问的地方 有人愿意提出来或许是好事 (?)
那直接用c-style string直接用\0当marker就好 不用清空不过只是练习的话 那怎么做都没差就是 =P
楼上的大大不好意思,不是很明白您的说法,可以再解释一一点吗? 谢谢你 我是新手,目前c比较熟c++不太行
作者:
bibo9901 (function(){})()
2014-05-10 00:23:00意思是通常不用把每一格都“清空成\0”, 直接写入字串再补\0就好了.要表达空字串, 在第一格写入\0即可.
对,在大多数的情况下这种情况称为memzero(来自于win32的同名宏),在user space通常会被视为不是很推荐的写法。虽然知道你只是练习,不过还是提醒一下