Re: [問題] 有計算陣列長度的函數嗎?

看板C_and_CPP作者 ( )時間15年前 (2009/11/18 04:02), 編輯推噓13(1308)
留言21則, 9人參與, 最新討論串2/2 (看更多)
不好意思,借標題一用 如果字串為 unsigned char *s = "abc\0def"; strlen(s) 就會是 3 (不包括'\0') 在這部分不知道要怎樣才可以得知 s 字串的長度(應該是 7 + 1) 我是要將它轉成16進位, 需要知道整個字串的長度跑迴圈, 但是因為中間有'\0' 就被切掉了.. 謝謝。 ※ 引述《fjf1980 (Yes We Can!)》之銘言: : 如題 : 我知道strlen可以計算串列長度,可是陣列沒辦法 : 我實際跑了,結果也是錯的。 : int main(int argc, char *argv[]) : { : int a[3]={3,1,1}; : char b[9]; : char *str="1234"; : printf("%d",strlen(b)); : system("PAUSE"); : return 0; : } : 例如這樣,如果是strlen(str)這樣就可以 : 那有可以計算陣列長度的函示嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.117.91.97

11/18 12:07, , 1F
用 unsigned char s[] = "abc\0def"; 搭配/sizeof()那
11/18 12:07, 1F

11/18 12:08, , 2F
個方法應該行....@_@"
11/18 12:08, 2F

11/18 12:28, , 3F
不過傳一傳就會不見了... 還是當沒有這種方法比較好
11/18 12:28, 3F

11/18 12:30, , 4F
對啊, 所以之前討論的結果就是PG自己記起來XD
11/18 12:30, 4F

11/18 13:06, , 5F
這要自己把pointer和長度一起存在struct裡面
11/18 13:06, 5F

11/18 13:07, , 6F
不然就是改用 C++ string
11/18 13:07, 6F

11/18 13:07, , 7F
用 C-style string 是跟自己過意不去,別再用了
11/18 13:07, 7F

11/18 13:08, , 8F
人家寫C叫他別用C-style string 這樣豈不是很可憐 XD
11/18 13:08, 8F

11/18 13:10, , 9F
JAVA的string好方便的(逃)
11/18 13:10, 9F

11/18 13:54, , 10F
只能用 C 的話, 要不就是自己包一個.... 也很麻煩
11/18 13:54, 10F

11/18 14:06, , 11F
不幸的是,寫 C 就是這麼麻煩
11/18 14:06, 11F

11/18 14:56, , 12F
OK, 謝謝各位的回答囉。
11/18 14:56, 12F

11/18 17:16, , 13F
我比較好奇的是,'\0' 若當成一個字元是可以,但是你要怎麼
11/18 17:16, 13F

11/18 17:17, , 14F
在 "" 裡面將\0 兩個字元縮成一個字元??
11/18 17:17, 14F

11/18 17:21, , 15F
囧.......真的會被當成結束字元耶....
11/18 17:21, 15F

11/18 17:36, , 16F
它不是兩個字元.... 它只有一個字元, 就是 0
11/18 17:36, 16F

11/18 17:39, , 17F
第一個\放在''或""裡會被當escape字元啊....XD
11/18 17:39, 17F

11/18 17:39, , 18F
\是保留字阿~~
11/18 17:39, 18F

11/18 17:39, , 19F
XD 有人搞笑了
11/18 17:39, 19F

11/18 17:41, , 20F
哇共母丟阿~~拍謝~~XD
11/18 17:41, 20F

11/18 17:42, , 21F
V大才是對的XD
11/18 17:42, 21F
文章代碼(AID): #1B0t7Qc2 (C_and_CPP)
文章代碼(AID): #1B0t7Qc2 (C_and_CPP)