[問題] memset

看板C_and_CPP (C/C++)作者 (青)時間16年前 (2009/11/23 11:04), 編輯推噓7(7023)
留言30則, 8人參與, 最新討論串1/1
請教各位一個問題 我使用memset做char array初始化 不過有個地方產生了一個疑問,下面是程式碼: //沒問題的版本 char *str = new char [70]; memset(str, 0x31, 70); //有問題的版本 char *str = new char [70]; memset(str, 0x31, strlen(str)); 請問一下,我在第二個地方使用的strlen,結果不是一樣為70嗎? 但是卻只有第一個版本可以成功初始化出字元'1' 而第二個版本卻完全被初始化成0(非字元'0') 請問一下,這是什麼樣的問題?還請各位指點一下 -- ▁▁ Google 女友|██████████████████▕搜尋進階搜尋 | 使用偏好 ▇▇  ̄ ̄ ̄ ̄  ̄ ̄ ̄ ̄ 搜尋: ⊙所有網頁 ○中文網頁○繁體中文網頁 ○台灣的網頁 所有網頁 約有0項符合女友的查詢結果,以下是第 0項。 共費21年 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.74.245.163

11/23 11:26, , 2F
strlen 是拿來算以 0 結尾的字串長度
11/23 11:26, 2F

11/23 11:26, , 3F
剛 new 出來的空間, 內容是什麼不一定, 都是 0 就什麼都不做
11/23 11:26, 3F

11/23 11:27, , 4F
(因為 strlen 之後會得到 0)
11/23 11:27, 4F

11/23 11:29, , 5F
那再請教一下,那以動態方式宣告的陣列
11/23 11:29, 5F

11/23 11:30, , 6F
不就只能給定固定值,而沒辦法用像是sizeof的辦法嗎?
11/23 11:30, 6F

11/23 11:51, , 7F
你太依賴別人了,很多都是直接查書、搜尋就有的。
11/23 11:51, 7F

11/23 12:00, , 8F
動態宣告的長度是你自己指定的 把那個值記錄下來就好
11/23 12:00, 8F

11/23 12:46, , 9F
那個strlen目的是在用字串長度
11/23 12:46, 9F

11/23 12:51, , 10F
因為strlen會計算不是0的部份來當作回傳個數
11/23 12:51, 10F

11/23 12:52, , 11F
你改用 vector<char> 就解決了
11/23 12:52, 11F

11/23 12:52, , 12F
你可以試一下char src[70];然後輸入字元在用strlen(src)
11/23 12:52, 12F

11/23 12:53, , 13F
不需要自己 new,不需要 memset
11/23 12:53, 13F

11/23 12:53, , 14F
他應該會根據你輸入的字元長度來計算個數!
11/23 12:53, 14F

11/23 12:56, , 15F
所以BUG就是在這裡!你src沒東西strlen怎麼測出陣列空間
11/23 12:56, 15F

11/23 12:57, , 16F
要改的話!~用sizeof()來用!~他用來你設定空間大小來算的
11/23 12:57, 16F

11/23 13:29, , 17F
"因為strlen會計算不是0的部份來當作回傳個數" 這段話有
11/23 13:29, 17F

11/23 13:29, , 18F
相當程度的理解錯誤, 建議直接看221大的連結看strlen到
11/23 13:29, 18F

11/23 13:29, , 19F
new 出來的大小請用 #include<malloc.h> _msize()
11/23 13:29, 19F

11/23 13:30, , 20F
底讀入什麼回傳什麼, 才能知道使用上有什麼限制與適合用
11/23 13:30, 20F

11/23 13:31, , 21F
在哪裡; 小弟比較常查看cplusplus網站的, 附個短網址:
11/23 13:31, 21F

11/23 13:31, , 22F
11/23 13:31, 22F

11/23 14:03, , 23F
謝謝各位指點
11/23 14:03, 23F

11/23 14:03, , 24F
另外,關於t大的講法,因為在我個人知道的範圍
11/23 14:03, 24F

11/23 14:04, , 25F
我只知道動態方式目前沒辦法直接用sizeof的方式取大小
11/23 14:04, 25F

11/23 14:04, , 26F
我並不是說都沒有查過書
11/23 14:04, 26F

11/23 14:04, , 27F
我是認為版上各位先進或許有辦法,所以才特來請教各位的
11/23 14:04, 27F

11/23 14:28, , 28F
也許吧,不是限於這個問題,看你以前發的文而談
11/23 14:28, 28F

11/23 14:51, , 29F
既然t大您都這樣說了,那我應該為我的無知向各位道歉
11/23 14:51, 29F

11/23 14:52, , 30F
但也謝謝各位不厭其煩的給予指導
11/23 14:52, 30F
文章代碼(AID): #1B2VlNHZ (C_and_CPP)
文章代碼(AID): #1B2VlNHZ (C_and_CPP)