将一串字符串数字转化为整型数字

上篇文章介绍了itoa函数的实现,今天来说说atoi函数,主要思路是:将字符串从头开始读取,跳过最前面的空格以及其他无用字符;遇到正负号,做标记;之后的字符串,遇到数字则转换,遇到其他字符则直接跳出。好了,贴下代码:

 1 int atoi(char str[])
 2 {
 3         int flag=0;
 4         int num=0;
 5         int i=0;
 6         while(str[i]==' '||str[i]=='	')                //判断字符串开头是否为制表符或者空格
 7         {
 8                 i++;
 9         }
10         while(str[i]=='-'||str[i]=='+')                 //判断字符串数字的正负
11                 {
12                         if(str[i]=='-')
13                         {
14                                 flag=1;                 //为负的则标记
15                         }
16                         i++;
17                 }
18         while(str[i]!='')                             //读字符串直到结尾
19         {
20                 if(str[i]>='0'&&str[i]<='9')            //判断字符是否为数字
21                         {
22                                 num=str[i]-'0'+num*10;  //将字符转化为数字
23                                 i++;
24                         }
25                 else                                    //如果字符串中有其他字符直接跳出
26                         break;
27         }
28         if(flag==1)
29         num=-num;                                       //如果有标记,将数字变为负数
30         printf("%d",num);
31         return 0;
32 }

好了,应该能理解,最关键的在22行,将字符串数字转换为整型数字,OK。

原文地址:https://www.cnblogs.com/kingos/p/4510503.html