看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) GCC 問題(Question): 在公司寫code遇到的問題... 是C code,所以不能用C++的string @@ 1.從某個已經存在很久的function得到unsigned char的array (確定值只會是unsigned) 要處理array裡的值時,會用到strlen ( const char *str ); 但是strlen是收signed char 把unsigned char傳進去會出現warning 雖然值不會有問題,但是公司不允許有build code warning 2.需要做數字轉字串的動作 因此使用了sprintf(char *str, const char *format, ... ); 但sprintf的是存進signed char 但存進去的值必須再存進unsigned char (也是已經存在很久的code,不可以改) 同 1. 的問題,會有warning 請問遇到上面的問題,不能改原本已經存在的code 我是想乾脆自己定義 能收unsigned char的strlen 和 存進unsigned char的sprintf 但不知道這樣是不是好方法 @_@ 請問大家認為怎麼做會比較好呢? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.195.197.207
EdisonX:strlen( (const char*)unsigned_byte_array) ; 不行嗎 07/17 23:21
EdisonX:就直接硬轉型, 反正 terminate char. 表示都一樣. 07/17 23:22
※ 編輯: Zoxge 來自: 123.195.197.207 (07/17 23:31)
Zoxge:還沒這樣試過.. 07/17 23:34
Zoxge:但我試過在餵進strlen前就先轉存..也是warning... = = 07/17 23:34
loveme00835:unsigned char/signed char/char 不該被當作是一樣的 07/17 23:55
loveme00835:用 memcpy 複製到另外一個陣列再說吧 07/17 23:55
cuteclare:直接轉型~ 07/18 00:30
loveme00835:用 strlen() 來接 unsigned char* xD 體質本來就不好 07/18 00:51
krscent:有沒有考慮自己實作一個吃unsigned char*的strlen XD 07/18 01:37
karaokstar:原po有說想乾脆自己定義strlen啊 XD 07/18 01:39
Zoxge:請問為何用strlen()接unsigned不好呢? 07/18 01:47
Zoxge:請問要用memcpy copy到另一個array的原因是? 這樣就不會有 07/18 01:48
Zoxge:signed與unsigned的問題嗎? 07/18 01:48
xvid:手動寫一個strlen吧 一樣用0值判別字串結束? 07/18 21:38