zoukankan      html  css  js  c++  java
  • atoi()和itoa()函数详解以及C语言实现(转)

    atoi()函数

    atoi()原型:  int atoi(const char *str );

    函数功能:把字符串转换成整型数。

    参数str:要进行转换的字符串

    返回值:每个函数返回 int 值,此值由将输入字符作为数字解析而生成。 如果该输入无法转换为该类型的值,则atoi的返回值为 0。

    注意:使用该函数时要注意atoi返回的是int类型,注意输入str的范围不要超出int类型的范围。

    一小段代码演示一下该函数的使用:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int a;
        char *ptr1 = "-12345";
    
        a = atoi(ptr1);
    
        printf("a = %d,%d/n", a);
    
        return 0;
    }
    

      下面来用C语言进行实现该函数:

    #include <stdio.h>                                                                                                                            
    #include <stdbool.h>
      
    int my_atoi(const char *src)
    {
          int s = 0;
          bool isMinus = false;
      
          while(*src == ' ')  //跳过空白符
          {
              src++; 
          }
      
          if(*src == '+' || *src == '-')
          {
              if(*src == '-')
              {
                  isMinus = true;
              }
              src++;
          }
          else if(*src < '0' || *src > '9')  //如果第一位既不是符号也不是数字,直接返回异常值
          {
              s = 2147483647;
              return s;
          }
      
          while(*src != '' && *src >= '0' && *src <= '9')
          {
              s = s * 10 + *src - '0';
              src++;
          }
          return s * (isMinus ? -1 : 1);
     }
    
     int main()
     {
          int num;
      
          char *str = "a123456";
          num = my_atoi(str);
          printf("atoi num is: %d 
    ", num);
      
          return 0;
     }
    

     

    itoa()函数

    itoa()原型:  char *itoa( int value, char *string,int radix);

    原型说明:

    输入参数:

    value:要转换的数据。
    string:目标字符串的地址。
    radix:转换后的进制数,可以是10进制、16进制等,范围必须在 2-36。

    功能:将整数value 转换成字符串存入string 指向的内存空间 ,radix 为转换时所用基数(保存到字符串中的数据的进制基数)。

    返回值:函数返回一个指向 str,无错误返回。

    注意:itoa不是一个标准的c函数,他是windows特有的,跨平台写程序,要用sprintf。

    #include <stdio.h>
    #include <ctype.h>
    
    
    //整数的各位数字加‘0’转换为char型并保存到字符数组中                                                                                           
    int itoa(int n, char s[])
    {
        int i;
        int j;
        int sign;
    
        sign = n;    //记录符号
        if(sign < 0)
        {
           n = -n;  //变为正数处理 
        }
    
        i = 0;
        do{
            s[i++] = n % 10 + '0';  //取下一个数字
        }while((n /= 10) > 0);
    
        if(sign < 0 )
        {
            s[i++] = '-';
            s[i] = '';
        }
    
        for(j = i; j >= 0; j-- )
        {
            printf("%c 
    ", s[j]);
        }
        return 0;
    }
    int main()
    {
        int n;
        char s[20];
    
        n = -688;
        itoa(n, s);
        return 0;
    }
    

      

     

  • 相关阅读:
    git如何进行远程分支切换
    js中实现多态
    css选择器中:first-child与:first-of-type的区别
    js实现图片延时加载的原理
    认识AMD、CMD、UMD、CommonJS
    CORS详解
    JS实现继承的五种方式
    jQuery.fn.extend() 函数详解
    Java基础面试题
    Java面试题集
  • 原文地址:https://www.cnblogs.com/lh03061238/p/12785630.html
Copyright © 2011-2022 走看看