[問題] 清空字元陣列

看板C_and_CPP作者 (不來&石見)時間11年前 (2014/05/07 22:37), 11年前編輯推噓3(3024)
留言27則, 7人參與, 最新討論串1/1
開發平台(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

05/07 23:01, , 1F
memset
05/07 23:01, 1F

05/07 23:08, , 2F
已解答 XD
05/07 23:08, 2F

05/07 23:12, , 3F
1F 正解
05/07 23:12, 3F

05/08 09:21, , 4F
記得 #include <string.h>
05/08 09:21, 4F

05/08 13:31, , 5F
謝謝大家!!!!
05/08 13:31, 5F

05/08 13:35, , 6F
我有個小問題,為什麼要清空?普通的做法是放一個marker
05/08 13:35, 6F

05/08 13:36, , 7F
來標示「這個地方往後到陣列終點皆為零」,跟C-Style
05/08 13:36, 7F

05/08 13:36, , 8F
string是完全一樣的道理(marker用\0即可)
05/08 13:36, 8F

05/08 13:37, , 9F
memset在某些情況下是一個非常昂貴的操作(尤其是mmap下
05/08 13:37, 9F

05/08 13:38, , 10F
你無法得知fd的消除成本),我會建議盡可能不要用這種粗
05/08 13:38, 10F

05/08 13:38, , 11F
暴的方式來操作會比較好一點。
05/08 13:38, 11F

05/08 13:38, , 12F
當然普通記憶體來講,memset是很便宜的。
05/08 13:38, 12F

05/08 13:45, , 13F
不過如果要達到你說的效果的話 memset是對的 只是正常
05/08 13:45, 13F

05/08 13:46, , 14F
設計來講,需要這種raw erase的機會真的不算太多
05/08 13:46, 14F

05/08 21:11, , 15F
其實感覺問題的描述中到底是存數字還是字元不太清楚
05/08 21:11, 15F

05/08 21:11, , 16F
變數命名跟資料型態或許也還有可以討論的地方
05/08 21:11, 16F

05/08 21:12, , 17F
不過這些都是內文沒問的地方 有人願意提出來或許是好事 (?)
05/08 21:12, 17F
其實我在練習的時候遇到的問題, 輸入一個計算式由左而右運算 EX:14-12/2+1*100=200 唯一要求就是用用字元陣列去存輸入的計算式 ※ 編輯: brilliantye (125.227.255.80), 05/09/2014 17:46:58

05/09 20:12, , 18F
那直接用c-style string直接用\0當marker就好 不用清空
05/09 20:12, 18F

05/09 20:12, , 19F
不過只是練習的話 那怎麼做都沒差就是 =P
05/09 20:12, 19F

05/09 23:41, , 20F
樓上的大大不好意思,不是很明白您的說法,可以再解釋一
05/09 23:41, 20F

05/09 23:41, , 21F
一點嗎? 謝謝你 我是新手,目前c比較熟c++不太行
05/09 23:41, 21F

05/10 00:23, , 22F
意思是通常不用把每一格都「清空成\0」, 直接寫入字串再
05/10 00:23, 22F

05/10 00:24, , 23F
補\0就好了.
05/10 00:24, 23F

05/10 00:25, , 24F
要表達空字串, 在第一格寫入\0即可.
05/10 00:25, 24F

05/11 14:52, , 25F
對,在大多數的情況下這種情況稱為memzero(來自於win32
05/11 14:52, 25F

05/11 14:52, , 26F
的同名巨集),在user space通常會被視為不是很推薦的
05/11 14:52, 26F

05/11 14:53, , 27F
寫法。雖然知道你只是練習,不過還是提醒一下
05/11 14:53, 27F
文章代碼(AID): #1JQaKtP8 (C_and_CPP)