[問題] printf 和 unsigned char*
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
GCC Linux SUSE
問題(Question):
最近在寫C,碰到大量的unsigned char*,然後又得認命的去看內容兼找錯,
只好利用printf來把內容顯示出來看,不過在一連串意外之後,
我對printf越來越陌生了 Q口Q
先直接看下面的測試程式:
int int01 = 100;
unsigned char *str;
unsigned char *tmp;
str = (unsigned char *)malloc(1);
tmp = (unsigned char *)malloc(2);
sprintf(str,"%d",int01); //將int01的數值利用sprintf餵給str
memcpy(tmp,str,1); //利用memcpy把數值copy給tmp
printf("%d\n",*str); //輸出 49 (神奇的49....不知道哪來的)
printf("%u\n",*str); //輸出 49 (unsigned dec和樓上吻合)
printf("%x\n",*tmp); //輸出 31 (16進位和樓上吻合)
printf("%x\n",*(tmp+1) ); //輸出 0 (第二個byte沒有數值 正確)
想請問大大,要怎麼餵數值給unsigned char*?
輸出49真的讓我有點傻眼,為什麼不是100 >"<
再請問大大,如果我要在unsigned char *str 當中餵入100的二進位(0x1100100)
然後用printf() 顯示出100的話,我該怎麼改?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.251.71.22
→
05/17 16:16, , 1F
05/17 16:16, 1F
→
05/17 16:16, , 2F
05/17 16:16, 2F
→
05/17 16:17, , 3F
05/17 16:17, 3F
推
05/17 16:18, , 4F
05/17 16:18, 4F
→
05/17 16:18, , 5F
05/17 16:18, 5F
→
05/17 16:18, , 6F
05/17 16:18, 6F
→
05/17 16:18, , 7F
05/17 16:18, 7F
→
05/17 16:20, , 8F
05/17 16:20, 8F
→
05/17 16:20, , 9F
05/17 16:20, 9F
→
05/17 16:20, , 10F
05/17 16:20, 10F
→
05/17 16:21, , 11F
05/17 16:21, 11F
→
05/17 16:21, , 12F
05/17 16:21, 12F
→
05/17 16:21, , 13F
05/17 16:21, 13F
→
05/17 16:21, , 14F
05/17 16:21, 14F
→
05/17 16:22, , 15F
05/17 16:22, 15F
→
05/17 16:22, , 16F
05/17 16:22, 16F
→
05/17 16:23, , 17F
05/17 16:23, 17F
※ 編輯: shiengchyi 來自: 60.251.71.22 (05/17 16:30)
推
05/17 16:48, , 18F
05/17 16:48, 18F
→
05/17 16:49, , 19F
05/17 16:49, 19F
→
05/17 16:50, , 20F
05/17 16:50, 20F
→
05/17 17:07, , 21F
05/17 17:07, 21F
→
05/17 17:26, , 22F
05/17 17:26, 22F
→
05/17 18:18, , 23F
05/17 18:18, 23F
推
05/18 07:52, , 24F
05/18 07:52, 24F
→
05/18 13:11, , 25F
05/18 13:11, 25F