原文来自

http://blog.163.com/shi_shun/blog/static/23707849201001394729708/

DE>#include<stdio.h>
int atoi(const char *str)
{
    int value=0;
    bool b_plus=true; //判断符号

switch(*str) //过滤符号

{
    case '+':
        str++;
        break;
    case '-':
        b_plus=false;
        str++;
        break;
    default:
        break;
    }

while('\0' != *str)
    {
        value = (value*10)+(*str-'0');
        str++;
    }
    if(!b_plus)
        value=-value;
    return value;
}

void main()
{
    char str[]="-999";
    int value=atoi(str);
    printf("The result is:%d\n",value);
}
DE>

(2)itoa的实现:

DE>#include<stdio.h>
void itoa(int value, char *str)
{
    if (value < 0) //如果是负数,则str[0]='-',并把value取反(变成正整数)

{
        str[0] = '-';
        value = 0-value;
    }
    int i,j;
    for(i=1; value > 0; i++,value/=10) //从value[1]开始存放value的数字字符,不过是逆序,等下再反序过来

str[i] = value%10+'0'; //将数字加上0的ASCII值(即'0')就得到该数字的ASCII值

for(j=i-1,i=1; j-i>=1; j--,i++) //将数字字符反序存放

{
        str[i] = str[i]^str[j];
        str[j] = str[i]^str[j];
        str[i] = str[i]^str[j];
    }
    if(str[0] != '-') //如果不是负数,则需要把数字字符下标左移一位,即减1

{
        for(i=0; str[i+1]!='\0'; i++)
            str[i] = str[i+1];
        str[i] = '\0';
    }
}

void main()
{
    int value = -1212345;
    char str[10] = {'\0'}; //记得把str全填充为'\0'

itoa(value, str);
    printf("The result is:%s\n", str);
}
DE>

那个异或真是超赞!!

atoi和itoa(头文件stdilb.h)的C实现相关推荐

  1. itoa 头文件 linux,【整理】Linux内核中的atoi,itoa等函数

    对于普通应用程序,可以通过包含头文件stdlib.h和stdio.h,string.h等,然后调用需要的itoa(),atoi()等函数, 但是对于Linux内核来说,无法使用那些C库中的函数. 对此 ...

  2. c语言中的头文件stdlib.h的作用,C语言中你可能不熟悉的头文件(stdlib.h)

    C语言中你可能不熟悉的头文件(stdlib.h) C Standard General Utilities Library (header) C标准通用工具库(头文件) 此头文件定义了一些通用功能函数 ...

  3. BST(binary search tree)类型题目需要用到的头文件binary_tree.h

    下面是二叉搜索树需要用到的头文件binary_tree.h #include <stdio.h>struct BinaryTreeNode{int value;BinaryTreeNode ...

  4. tree类型题目需要用到的头文件tree.h

    下面是树类型题目需要用到的头文件tree.h,请包含在cpp文件中编译,而不是放在c文件中编译,比如查找树中两个节点的最低公共父结点的题common_parent_in_tree.cpp,编译它的方法 ...

  5. 头文件setjmp.h

    头文件<setjmp.h>定义了宏setjmp,并且为了绕过正常的函数调用和返回规则声明了一个函数和一个类型. 1.类型jmp_buf 它是一个数组类型,适合存储恢复一个调用环境所需的信息 ...

  6. vs项目中头文件(.h)静态库(.lib)和 动态库(.dll )的路径和配置

    在程序开发中,很多时候需要用到别人开发的工具包,如OpenCV和itk.一般而言,在vs中,很少使用源文件,大部分是使用对类进行声明的头文件(.h)和封装了类的链接库(静态.lib或动态.dll).如 ...

  7. 【转】C++中#include包含头文件带 .h 和不带 .h 的区别

    C++中#include包含头文件带 .h 和不带 .h 的区别? 如 #include <iostream> 和 #include <iostream.h> 包含的东西有哪些 ...

  8. Microsoft Visual Studio下编译缺少头文件unistd.h解决办法

    许多在Linux下开发的C程序都需要头文件unistd.h,但VC中没有个头文件, 所以用VC编译总是报错.把下面的内容保存为unistd.h,可以解决这个问题. /** This file is p ...

  9. 【C++】C++中的头文件(.h)—详解(2)

    接上... [fishing-pan:https://blog.csdn.net/u013921430转载请注明出处] 头文件中写些什么 在上篇博客中写到头文件本身不参与编译,但是它们被包含到源文件中 ...

最新文章

  1. 修改Ubuntu的启动logo
  2. Spring事务嵌套引发的问题--Transaction rolled back because it has been marked as rollback-only...
  3. python numpy库安装 mac_教程|如何在mac上为Python安装XGBoost!
  4. 在liferay strut2中如何使用session
  5. HDU_3786 找出直系亲属- softbar
  6. Collections.shuffle()方法的使用
  7. linux谁使用内存,linux内存不知被谁用了
  8. 一位资深程序员大牛给予Java的学习路线建议
  9. 提升存储过程的效率,用减少表的更新次数来实现
  10. Visio图片复制到word中显示不完全(毕业论文格式下)
  11. 阿里云主要产品及功能介绍,阿里云产品分为6大分类:云计算基础/安全/大数据/人工智能/企业应用/物联网...
  12. python成绩统计及格学平成_强化学习训练Chrome小恐龙Dino:最高超过4000分
  13. 述职答辩提问环节一般可以问些什么_述职提问环节应该提哪些关键问题?
  14. javascript清理IE内存
  15. Super Jumping! Jumping! Jumping!超级跳!跳!跳!
  16. 好佳居软装十大品牌 每个人都有着适合自己的软装
  17. mysql数据库j电子课件,MYSQL数据库技术分享PPT演示课件
  18. [黑马IOS自学第十四篇]Foundation框架学习
  19. Unity Shader 之遮挡透明
  20. 红米9A android版本,红米9A配置参数-参数详情

热门文章

  1. 2019.8.7 金华正睿集训总结Day11(ACM)
  2. 怎么更改计算机开机用户名和密码,小编详解怎么修改电脑开机密码
  3. 最佳实践 | 用腾讯云AI人像变换给自己一次“跨越年龄的体验”
  4. GitHub原生AI代码生成工具Copilot,官方支持Visual Studio 2022
  5. Accuracy, Precision, Recall和F1-score解释
  6. [渝粤教育] 深圳信息职业技术学院 《新理念英语》English For You 参考 资料
  7. JavaWeb技术之JSP
  8. 怎么选择国际短信平台?
  9. 什么是BlockingQueue
  10. 【jquery Ajax 练习】图书管理