zoukankan      html  css  js  c++  java
  • atoi 和 itoa

    转自:http://www.cnblogs.com/cobbliu/archive/2012/08/25/2656176.html

    atoi 和 itoa是面试笔试经常要考到的题目,下面两份代码是用C语言实现的atoi和itoa:

    1, atoi (将字符串转换为数字)

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

    函数说明: 参数nptr字符串,如果第一个非空格字符不存在或者不是数字也不是正负号则返回零,否则开始做类型转换,之后检测到非数字(包括结束符 ) 字符时停止转换,返回整型数。

    复制代码
    #include <stdio.h>
    #include <assert.h>
    static int atoi(const char* str)
    {
        int result = 0;
        int sign = 0;
        assert(str != NULL);
        // proc whitespace characters
        while (*str==' ' || *str=='	' || *str=='
    ')
            ++str;
    
        // proc sign character
        if (*str=='-')
        {
            sign = 1;
            ++str;
        }
        else if (*str=='+')
        {
            ++str;
        }
    
        // proc numbers
        while (*str>='0' && *str<='9')
        {
            result = result*10 + *str - '0';
            ++str;
        }
    
        // return result
        if (sign==1)
           return -result;
        else
           return result;
    } 
    复制代码

    2. itoa (将数字转换成字符串)

    char *itoaint value, char *string,int radix);

      原型说明:

      value欲转换的数据。

      string:目标字符串的地址。

      radix:转换后的进制数,可以是10进制、16进制等

    复制代码
    char *itoa(int val, char *buf, unsigned radix)
    {
        char   *p;             
        char   *firstdig;      
        char   temp;           
        unsigned   digval;     
        p = buf;
        if(val <0)
        {
            *p++ = '-';
            val = (unsigned long)(-(long)val);
        }
        firstdig = p; 
        do{
            digval = (unsigned)(val % radix);
            val /= radix;
           
            if  (digval > 9)
                *p++ = (char)(digval - 10 + 'a'); 
            else
                *p++ = (char)(digval + '0');      
        }while(val > 0);
       
        *p-- = ' ';         
        do{
            temp = *p;
            *p = *firstdig;
            *firstdig = temp;
            --p;
            ++firstdig;        
        }while(firstdig < p);  
        return buf;
    }
    复制代码
  • 相关阅读:
    css 九宫格
    Scratch 3.0 版本比较
    快速上手IOT视觉化开发工具Node-RED
    使用MUART0-P-1-2设置无线PM2.5感测环境
    12只超酷机器人,在家用3D打印搞定!
    玩机器人可以学到什么?
    人工智能AI芯片与Maker创意接轨(下)
    人工智能AI芯片与Maker创意接轨 (中)
    人工智能AI芯片与Maker创意接轨 (上)
    用Micro:bit控制遥控车
  • 原文地址:https://www.cnblogs.com/Allen-rg/p/6945720.html
Copyright © 2011-2022 走看看