開發平台(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'; 可以不用加應該說 上面那行可以省略
erh, 拜託,這個用迴圈好嗎 XD 不要硬code 9876543...他是一個總長度為10的char array
你去超市會說 小姐你好 我要買那一手啤酒的第五瓶嗎
作者:
uranusjr (â†é€™äººæ˜¯è¶…級笨蛋)
2015-01-13 11:31:00我只知道我去書店都會拿從上面數來第三本