(C语言)输入一个正整数字符串并将字符串转化为相应的数字 请帮我分析下 初学着

#include <stdio.h>
long cton(void)
{ char c;
long s=0;
c=getchar();
while(c>='0'&&c<='9')
{s=s*10+c-'0';c=getchar();}//这里少了一句c=getchar();
return (s);
}
void main()
{ printf("input a line of numeric character:");
printf("%ld\n",cton());
getch();
}

s=s*10+c-'0' 尤其是这步

我拿数字字符串123来说吧
输入123,回车
c = getchar(),导致c = '1';进入循环
s = s * 10 + c - '0'; 等价于 s = 0 * 10 + 49 - 48 (说明,0的asc码为48, '1'的asc码为49)-》s = 1
继续 c = getchar(), c = '2'
s = s * 10 + c - '0'; 等价于 s = 1 * 10 + 50 - 48 (说明,0的asc码为48, '1'的asc码为50)-》s = 12
继续 c = getchar(), c = '2'
s = s * 10 + c - '0'; 等价于 s = 12 * 10 + 51 - 48 (说明,0的asc码为48, '1'的asc码为51)-》s = 123
总的来说,就是拼出数字
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-25
你可以去查下asc2码。。。然后再不懂就追问吧
相似回答