[问题] 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