看板 C_and_CPP 關於我們 聯絡資訊
不好意思,借標題一用 如果字串為 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
VictorTom:用 unsigned char s[] = "abc\0def"; 搭配/sizeof()那 11/18 12:07
VictorTom:個方法應該行....@_@" 11/18 12:08
adrianshum:不過傳一傳就會不見了... 還是當沒有這種方法比較好 11/18 12:28
VictorTom:對啊, 所以之前討論的結果就是PG自己記起來XD 11/18 12:30
littleshan:這要自己把pointer和長度一起存在struct裡面 11/18 13:06
littleshan:不然就是改用 C++ string 11/18 13:07
littleshan:用 C-style string 是跟自己過意不去,別再用了 11/18 13:07
nowar100:人家寫C叫他別用C-style string 這樣豈不是很可憐 XD 11/18 13:08
lwecloud:JAVA的string好方便的(逃) 11/18 13:10
ledia:只能用 C 的話, 要不就是自己包一個.... 也很麻煩 11/18 13:54
littleshan:不幸的是,寫 C 就是這麼麻煩 11/18 14:06
INTELp:OK, 謝謝各位的回答囉。 11/18 14:56
liu2007:我比較好奇的是,'\0' 若當成一個字元是可以,但是你要怎麼 11/18 17:16
liu2007:在 "" 裡面將\0 兩個字元縮成一個字元?? 11/18 17:17
liu2007:囧.......真的會被當成結束字元耶.... 11/18 17:21
ledia:它不是兩個字元.... 它只有一個字元, 就是 0 11/18 17:36
VictorTom:第一個\放在''或""裡會被當escape字元啊....XD 11/18 17:39
lwecloud:\是保留字阿~~ 11/18 17:39
ianfang:XD 有人搞笑了 11/18 17:39
lwecloud:哇共母丟阿~~拍謝~~XD 11/18 17:41
lwecloud:V大才是對的XD 11/18 17:42