zoukankan      html  css  js  c++  java
  • atoi 和 itoa是面试笔试经常要考到的题目,下面两份代码是用C语言实现的atoi和itoa:

    atoi 和 itoa的实现

    2012-08-25 14:57 by CobbLiu, 167 阅读, 0 评论, 收藏编辑

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

    1, atoi

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

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

    复制代码
    #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=='\t' || *str=='\n')
            ++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-- = '\0 ';         
        do{
            temp = *p;
            *p = *firstdig;
            *firstdig = temp;
            --p;
            ++firstdig;        
        }while(firstdig < p);  
        return buf;
    }

    http://www.cnblogs.com/cobbliu/archive/2012/08/25/2656176.html
  • 相关阅读:
    float浮动
    数据库基础操作
    Python re 模块
    I/O模型的使用
    函数形参与实参
    内置函数重写_运算符重载
    导入模块_导入包_标准库模块
    异常处理
    闭包
    函数式编程
  • 原文地址:https://www.cnblogs.com/qq378829867/p/2972937.html
Copyright © 2011-2022 走看看