• C++ Studio (二) ----- atoi()函数的实现 (自己编写功能)


    上一篇博客讲的是atoi()函数的功能及举例,现在呢,就自己写写代码(根据atoi()的功能)来表示atoi()函数的实现。我在这里先把atoi()函数的功能贴出来,也好有个参考啊~~~

        atoi()函数的功能:将字符串转换成整型数;atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负号才开始做转换,而再遇到非数字或字符串时('')才结束转化,并将结果返回(返回转换后的整型数)。

        atoi()函数实现的代码:

      

     1 /* 
     2 * name:xif 
     3 * coder:xifan@2010@yahoo.cn 
     4 * time:08.20.2012 
     5 * file_name:my_atoi.c 
     6 * function:int my_atoi(char* pstr) 
     7 */  
     8   
     9 int my_atoi(char* pstr)  
    10 {  
    11     int Ret_Integer = 0;  
    12     int Integer_sign = 1;  
    13       
    14     /* 
    15     * 判断指针是否为空 
    16     */  
    17     if(pstr == NULL)  
    18     {  
    19         printf("Pointer is NULL
    ");  
    20         return 0;  
    21     }  
    22       
    23     /* 
    24     * 跳过前面的空格字符 
    25     */  
    26     while(isspace(*pstr) == 0)  
    27     {  
    28         pstr++;  
    29     }  
    30       
    31     /* 
    32     * 判断正负号 
    33     * 如果是正号,指针指向下一个字符 
    34     * 如果是符号,把符号标记为Integer_sign置-1,然后再把指针指向下一个字符 
    35     */  
    36     if(*pstr == '-')  
    37     {  
    38         Integer_sign = -1;  
    39     }  
    40     if(*pstr == '-' || *pstr == '+')  
    41     {  
    42         pstr++;  
    43     }  
    44       
    45     /* 
    46     * 把数字字符串逐个转换成整数,并把最后转换好的整数赋给Ret_Integer 
    47     */  
    48     while(*pstr >= '0' && *pstr <= '9')  
    49     {  
    50         Ret_Integer = Ret_Integer * 10 + *pstr - '0';  
    51         pstr++;  
    52     }  
    53     Ret_Integer = Integer_sign * Ret_Integer;  
    54       
    55     return Ret_Integer;  
    56 }  

      

        现在贴出运行my_atoi()的结果,定义的主函数为:int  main  ()

      

       

     1 int main()  
     2 {  
     3     char a[] = "-100";  
     4     char b[] = "456";  
     5     int c = 0;  
     6       
     7     int my_atoi(char*);   
     8   
     9     c = atoi(a) + atoi(b);  
    10       
    11     printf("atoi(a)=%d
    ",atoi(a));  
    12     printf("atoi(b)=%d
    ",atoi(b));  
    13     printf("c = %d
    ",c);  
    14   
    15     return 0;  
    16 }  


        运行结果:

  • 相关阅读:
    块编程指南
    libxml2:Debug模式可以编译,Distribution下不可以?
    CIO应该考虑的九个外包神话和现实
    【Android游戏开发二十四】360°平滑游戏摇杆(触屏方向导航)
    自定义 UITableViewCell 的 accessory 样式
    提升UNIX安全性的Unix SSH示例配置
    java 跟.net webservice 互通问题
    外包合同中降低成本的战略性技巧
    get post
    Android SAX API: XmlResourceParser及其扩展应用
  • 原文地址:https://www.cnblogs.com/dudu580231/p/4821954.html
Copyright © 2020-2023  润新知