c语言模拟输入函数,将数字字串符转为十进制整数

来源:百度知道 编辑:UC知道 时间:2024/05/28 14:15:23
1 #include<stdio.h>
2 int main()
3 {
4 char str[30];
5 int n, i;
6 printf("请输入一串纯数字形成的数字字符串");
7 scanf("%s", str);
8 n=0;
9 i=0;
10 while(str[i]!='\0')
11 {
12 n=n*10+str[i]-'0';
13 i++;
14 }
15 printf("转换后的数字为%d", n);
16 }
请问一下!如果第7句我输入的是321,那就是--
str[o]=3, str[1]=2, str[2]=1;
那第12句的第一次循环n=0就是0=0*10+str[0]-'0';是什么意思呀!
str[o]-'0'又是什么意思呀,是不是str[0]里面的值-0相对的ASCLL码呀(3-48)??
我输入123321和456转后出来的数没变!这到底是将什么转成什么呀??
printf("请输入一串纯数字形成的数字字符串");
我输进去的也是数字呀 像51-48=3那3对应的ASCLL不是数字 又怎么用%d输出的呀

n=n*10+str[i]-'0';第十二句不是0=0*10+str[0]-'0';
是n = 0 * 10 + str[0]-'0'; str[0] - '0'是数字3.
你输入的数字3当字符处理ascll码是51,字符'0'的ascll是48,所以相减得数字3即12句为 n = 0 * 10 + 3;

我输入123321和456转后出来的数没变!这到底是将什么转成什么呀??
你用%d能输出那串数字说明你已经做了转换了,你可是输入进去的字符,转换出来的是数字