1、itoa函数实现

#include <stdio.h>void itoa(int i, char *string)
{int power=0,j=0;j=i;for( power=1;j>10;j/=10)power*=10;for(;power>0;power/=10){*string++='0'+i/power;i%=power;}*string='\0';printf("%s\n",string);
}
void main()
{char string[20];itoa(12345, string);printf("%s\n",string);
}

其中power相当于类似于1234,其power=1000;134,其power=100

*string++='0'+i/power;//获得取得字符的asicii码

i/power取得字符,例如1234/1000=1;234/100=2

2、atoi实现

int atoi(char *str)
{if(!str)return -1;bool bMinus=false;int result=0;if(('0'>*str || *str>'9')&&(*str=='+'||*str=='-')){if(*str=='-')bMinus=true;*str++;}while( *str != '\0'){if('0'> *str || *str>'9')break;elseresult = result*10+(*str++ - '0');}if (*str != '\0')//no-normal endreturn -2;return bMinus?-result:result;
}

重写的atoi函数,没有考虑溢出的情况。

if(('0'>*str || *str>'9')&&(*str=='+'||*str=='-'))//判读第一个字符是否为数字的正负号

if (*str != '\0')//no-normal end,当上文的while循环不正常退出,应视为字符串不合法,例如“+1234abc”

测试:

char *c1 = "12345";char *c2 = "-12345";char *c3 = "bat-123";char *c4 = "+123abc";printf("c1=%d\n",atoi(c1));printf("c2=%d\n",atoi(c2));printf("c3=%d\n",atoi(c3));printf("c4=%d\n",atoi(c4));

输出结果为:

c1=12345
c2=-12345
c3=-2
c4=-2

c函数itoa和atoi实现相关推荐

  1. 一.关于itoa,atoi添加头文件后仍报错,编写相应自定义函数解决方案。

    1.首先itoa.atoi的头文件 在stdlib.h下. 有时即使添加了stdlib.h依旧无法使用这两个函数. 比如stm32下编程时. 2.自定义函数如下: /* 将整数转化为字符串: num, ...

  2. C语言中的itoa和atoi函数的实现

    itoa与atoi的代码实现: int atoi(char *str) {char *p=str;switch(*p){case '+':p++;break;case '-':p++;break;de ...

  3. 字符串函数---itoa()函数详解及实现

    itoa()函数 itoa():char *itoa( int value, char *string,int radix); 原型说明: value:欲转换的数据. string:目标字符串的地址. ...

  4. itoa函数c语言原型,深入C++实现函数itoa()的分析

    函数itoa()是将整数型转换为c语言风格字符串的函数,原型: char * itoa(int data, char*p, int num):data是传入的带转化的数字,为整型变量(data的最大值 ...

  5. C语言中itoa和atoi函数的用法

    1.itoa函数的用法 (1) 函数说明 itoa是广泛应用的非标准C语言扩展函数.由于它不是标准C语言函数,所以不能在所有的编译器中使用.但是,大多数的编译器(如Windows上 的)通常在< ...

  6. itoa()和atoi()函数详解

    itoa(): 将整型值转换为字符串 头文件stdio.h 或 stdlib.h itoa()函数有3个参数: 第一个参数是要转换的数字, 第二个参数是要写入转换结果的目标字符串, 第三个参数是转移数 ...

  7. Linux下 itoa,atoi 函数的实现

    atoi和itoa是C中两个常见的函数,功能是进行字符和数字来回转换,原型如下: int atoi(const char *nptr); //nptr是要转换的字符串,返回转换后的整数. char * ...

  8. C++编程实现itoa和atoi函数

    1.int atoi(const char *nptr); 注意:参数nptr字符串遇到非数字或者"\0",停止转换. #include <IOSTREAM> #inc ...

  9. B00006 函数itoa()

    这是一个通用的基础程序,将整型数转换为数字字符串. 其中需要用到字符串逆序转换函数reverse(). 该程序来自K&C的<C程序设计语言>一书. 程序如下: /* itoa 带符 ...

最新文章

  1. 检索数据表中重复的记录
  2. 编码练习——Java-7-集合类
  3. mysql 数据路由_node-路由操作mysql数据库
  4. 梅森素数为什么这么重要?
  5. Grid Coloring(AtCoder-2687)
  6. 开源内容管理系统Drupal 修复信息泄露和 XSS 漏洞
  7. pop错误 找不到服务器,POP3 连接事务失败 - 找不到客户端访问服务器
  8. 20145226夏艺华 Exp6 信息搜集与漏洞扫描
  9. python 饼图代码_Python中使用Matplotlib画出饼图的代码实例
  10. 京东数科发布《京东区块链技术实践白皮书2020》(附白皮书下载链接)
  11. 如何查看电脑ip和端口
  12. InnoDB怎么解决幻读的?
  13. 过冲(overshoot)、下冲(Undershoot)的量化标准与评估实例
  14. Camera:前后闪光灯
  15. 数字图像处理学习笔记4第四章 图像变换 附实验
  16. java 读取pdf签名域_Java给PDF签名
  17. matlab cdf 曲线不平滑,拟合经验CDF曲线以找到确切的值
  18. 吴恩达机器学习笔记(七)神经网络:代价函数
  19. service mysql k8s_Kubernetes/K8S基础使用方法总结【五】——Service
  20. tensorflow安装2022/3/12

热门文章

  1. Java架构师和java工程师的区别是什么?架构师薪资是多少?
  2. input 禁止弹出默认的键盘处理方法
  3. 点云配准各种方法总结[不定时更新]
  4. golangci-lint 自定义linter核心代码 用于检查错误使用gtime.Time.Format() 例如gtime.Time.Format(“2006-01-02 15:04:05“)
  5. OracleP6机场工程进度控制系列15:总进度综合管控报告
  6. java 转成数字,java汉字转成数字
  7. 【算法设计与分析】将数字分解为n个数字之和
  8. XDOJ 综合题 数字分解排序
  9. Surface3 2+64 wifi版本重装8.1系统(疑难解答中无从‘驱动器恢复‘选项,另一种方式成功)
  10. 产品经理入门:一、产品、产品经理