作者brilliantye (不來&石見)
看板C_and_CPP
標題[問題] 清空字元陣列
時間Wed May 7 22:37:39 2014
開發平台(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';
}
來達成目的
想要請問有沒有其他辦法,可以清空已存部分資料的字元陣列
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.228.94.47
※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1399473463.A.648.html
推 AIGecko:memset 05/07 23:01
→ pcyu16:已解答 XD 05/07 23:08
→ diabloevagto:1F 正解 05/07 23:12
推 s25g5d4:記得 #include <string.h> 05/08 09:21
→ brilliantye:謝謝大家!!!! 05/08 13:31
推 Killercat:我有個小問題,為什麼要清空?普通的做法是放一個marker 05/08 13:35
→ Killercat:來標示「這個地方往後到陣列終點皆為零」,跟C-Style 05/08 13:36
→ Killercat:string是完全一樣的道理(marker用\0即可) 05/08 13:36
→ Killercat:memset在某些情況下是一個非常昂貴的操作(尤其是mmap下 05/08 13:37
→ Killercat:你無法得知fd的消除成本),我會建議盡可能不要用這種粗 05/08 13:38
→ Killercat:暴的方式來操作會比較好一點。 05/08 13:38
→ Killercat:當然普通記憶體來講,memset是很便宜的。 05/08 13:38
→ Killercat:不過如果要達到你說的效果的話 memset是對的 只是正常 05/08 13:45
→ Killercat:設計來講,需要這種raw erase的機會真的不算太多 05/08 13:46
→ pcyu16:其實感覺問題的描述中到底是存數字還是字元不太清楚 05/08 21:11
→ pcyu16:變數命名跟資料型態或許也還有可以討論的地方 05/08 21:11
→ pcyu16:不過這些都是內文沒問的地方 有人願意提出來或許是好事 (?) 05/08 21:12
其實我在練習的時候遇到的問題,
輸入一個計算式由左而右運算 EX:14-12/2+1*100=200
唯一要求就是用用字元陣列去存輸入的計算式
※ 編輯: brilliantye (125.227.255.80), 05/09/2014 17:46:58
→ Killercat:那直接用c-style string直接用\0當marker就好 不用清空 05/09 20:12
→ Killercat:不過只是練習的話 那怎麼做都沒差就是 =P 05/09 20:12
→ brilliantye:樓上的大大不好意思,不是很明白您的說法,可以再解釋一 05/09 23:41
→ brilliantye:一點嗎? 謝謝你 我是新手,目前c比較熟c++不太行 05/09 23:41
→ bibo9901:意思是通常不用把每一格都「清空成\0」, 直接寫入字串再 05/10 00:23
→ bibo9901:補\0就好了. 05/10 00:24
→ bibo9901:要表達空字串, 在第一格寫入\0即可. 05/10 00:25
→ Killercat:對,在大多數的情況下這種情況稱為memzero(來自於win32 05/11 14:52
→ Killercat:的同名巨集),在user space通常會被視為不是很推薦的 05/11 14:52
→ Killercat:寫法。雖然知道你只是練習,不過還是提醒一下 05/11 14:53