[問題] 清空字元陣列

作者: brilliantye (不來&石見)   2014-05-07 22:37:39
開發平台(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:00
memset
作者: pcyu16 (._.?)   2014-05-07 23:08:00
已解答 XD
作者: diabloevagto (wi)   2014-05-07 23:12:00
1F 正解
作者: s25g5d4 (function(){})()   2014-05-08 09:21:00
記得 #include <string.h>
作者: brilliantye (不來&石見)   2014-05-08 13:31:00
謝謝大家!!!!
作者: Killercat (殺人貓™)   2014-05-08 13:35:00
我有個小問題,為什麼要清空?普通的做法是放一個marker來標示「這個地方往後到陣列終點皆為零」,跟C-Stylestring是完全一樣的道理(marker用\0即可)memset在某些情況下是一個非常昂貴的操作(尤其是mmap下你無法得知fd的消除成本),我會建議盡可能不要用這種粗暴的方式來操作會比較好一點。當然普通記憶體來講,memset是很便宜的。不過如果要達到你說的效果的話 memset是對的 只是正常設計來講,需要這種raw erase的機會真的不算太多
作者: pcyu16 (._.?)   2014-05-08 21:11:00
其實感覺問題的描述中到底是存數字還是字元不太清楚變數命名跟資料型態或許也還有可以討論的地方不過這些都是內文沒問的地方 有人願意提出來或許是好事 (?)
作者: Killercat (殺人貓™)   2014-05-09 20:12:00
那直接用c-style string直接用\0當marker就好 不用清空不過只是練習的話 那怎麼做都沒差就是 =P
作者: brilliantye (不來&石見)   2014-05-09 23:41:00
樓上的大大不好意思,不是很明白您的說法,可以再解釋一一點嗎? 謝謝你 我是新手,目前c比較熟c++不太行
作者: bibo9901 (function(){})()   2014-05-10 00:23:00
意思是通常不用把每一格都「清空成\0」, 直接寫入字串再補\0就好了.要表達空字串, 在第一格寫入\0即可.
作者: Killercat (殺人貓™)   2014-05-11 14:52:00
對,在大多數的情況下這種情況稱為memzero(來自於win32的同名巨集),在user space通常會被視為不是很推薦的寫法。雖然知道你只是練習,不過還是提醒一下

Links booklink

Contact Us: admin [ a t ] ucptt.com