[問題] C關於字串轉數字計算

作者: LouisFFs (願翱翔)   2015-01-11 17:21:18
開發平台(Platform):VS2013
問題(Question):
小弟在寫身分證驗證時,遇到字串不能進行計算這問題所以GOOGLE了一下
知道了後面加個-'0'就可計算
Y = x[0] + 9 * x[1] + 8*(id[1] - '0') + 7*(id[2] - '0') + 6*(id[3] - '0') +
5*(id[4] - '0') + 4*(id[5] - '0') + 3*(id[6] - '0') + 2*(id[7] - '0') +
1*(id[8] - '0')+(id[9] - '0');
但是為何宣告要這樣才能過啊...求解釋謝謝大大!!
char id[11];
id[10] = '\0';
這樣就不行如圖下 然後跑出這錯誤視窗
char id[10];
http://ppt.cc/hruE
程式碼(Code):http://ideone.com/xQFzzk
作者: narukaze (Pt)   2015-01-11 18:23:00
你的形態是char 但你要計算數字 所以需要減去'0'(0x30)相減的結果才會是你要的0~9可以查查ASCII, 或是printf("%x", '0');
作者: bibo9901 (function(){})()   2015-01-11 18:26:00
原po的問題應該是為什麼字串要用 '\0' 結尾
作者: osnq (又可以掛bbs了)   2015-01-11 18:27:00
問題是,這樣的寫法也太奇怪了吧,可讀性也不好
作者: bibo9901 (function(){})()   2015-01-11 18:28:00
這是因為C規定 "字串" = "用\0結尾的char array"
作者: narukaze (Pt)   2015-01-11 18:28:00
啊 好像是耶 看錯了XD你要總共需要11個字元的空間來存 包含身分證的10碼+'\0'至於 id[10] = '\0'; 可以不用加應該說 上面那行可以省略
作者: LouisFFs (願翱翔)   2015-01-11 20:04:00
謝謝!! 我忘記我的空間不夠了哈哈
作者: Killercat (殺人貓™)   2015-01-11 20:17:00
erh, 拜託,這個用迴圈好嗎 XD 不要硬code 9876543...他是一個總長度為10的char array
作者: LouisFFs (願翱翔)   2015-01-11 23:29:00
哈哈哈~小弟新手 一想到有公式就直接帶進去哈哈
作者: MOONRAKER (㊣牛鶴鰻毛人)   2015-01-12 17:45:00
你去超市會說 小姐你好 我要買那一手啤酒的第五瓶嗎
作者: uranusjr (←這人是超級笨蛋)   2015-01-13 11:31:00
我只知道我去書店都會拿從上面數來第三本

Links booklink

Contact Us: admin [ a t ] ucptt.com