作者willy01 (網洋中的一條狗)
看板C_and_CPP
標題[問題] 字元
時間Fri Jun 29 11:20:47 2012
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
Linux C
問題(Question):
自己已經把問題結決 但是還是不懂 原本的為何邏輯是錯的
程式碼(Code):(請善用置底文網頁, 記得排版)
struct Tran_GPS {
char time[24];
//int id;
};
int main()
{
struct Tran_GPS tran1;
strcpy(tran1.time, "2012/05/15-13:27:30.791");
//tran1.time[18]存的是 0
int totalmsecond=(int)(tran1.time[18]);
printf("%d\n",totalmsecond);
}
預期想要printf出來的是0 但 最後出來的是48
char *c=&tran1.time[18];
int totalmsecond=atoi(c);
printf("%d\n",totalmsecond);
後來改成上面程式碼 才是出來0
後面改的程式碼 我知道原理
但問題是不太懂為啥 我最開始的打法是錯的?
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.164.79
推 hichcock:字元 '0' = int 的 ? 06/29 11:26
→ willy01:想要請問這樣不能用強制轉型 (tupe) 嗎?? 06/29 11:35
推 LPH66:因為 '0' 對電腦來說就真的是數字 48.... 06/29 11:38
→ LPH66:就算轉型也只是把 char 的 48 變成 int 的 48 而已 06/29 11:38
→ willy01:int s=time[18] - '0'; 06/29 11:51
→ willy01:要向上面那樣? 我大概知道哩 謝謝大家幫助 06/29 11:51
推 wes123:是想要使用printf("%c\n", totalmsecond);嗎? 06/29 22:18
推 milen:原本那樣子轉出來的是ASCII碼吧 07/02 13:01