一,要求:自己动手编写 atoi(char *str)函数,功能是将字符串变成数字

简单版本:

需要考虑的地方 1)正负号

2)仅仅考虑十进制

3)如何把数字 字符 变成整数

#include <iostream>
using namespace std;int StrToInt(char * str)
{int value = 0;int sign = 1;if(*str == '-')//负号 {sign = -1;str++;}while(*str)// 此法很巧妙,直接从高位开始乘加即可,不用考虑字符串的长度{value = value * 10 + *str - '0';str++;}return sign*value;
}
int main()
{cout<<StrToInt("123")<<endl;return 0;
}

当然也可以利用strlen或找结束字符的方式寻找最低位,乘数变化即可

二,加强版

下面的程序考虑了八进制、十进制、十六进制的字符串。

int StrToInt(char * str)
{int value = 0;int sign = 1;int radix;if(*str == '-'){sign = -1;str++;}if(*str == '0' && (*(str+1) == 'x' || *(str+1) == 'X')){radix = 16;str += 2;}else if(*str == '0')      // 八进制首字符为0{radix = 8;str++;}elseradix = 10;while(*str){if(radix == 16){if(*str >= '0' && *str <= '9')value = value * radix + *str - '0';elsevalue = value * radix + (*str | 0x20) - 'a' + 10;// value = value * radix + *str - 'a' + 10; // 也没问题啊}elsevalue = value * radix + *str - '0';str++;}return sign*value;
}
整数转换为字符串
void itoa (int n,char s[])
{
int i,j,sign;
if((sign=n)<0)//记录符号n=-n;//使n成为正数         i=0;
do{s[i++]=n+’0’;//取下一个数字
}while ((n/=10)>0);//删除该数字
if(sign<0)s[i++]=’-’;
s[i]=’\0’;
for(j=i;j>=0;j--)//生成的数字是逆序的,所以要逆序输出printf("%c",s[j]);
}

原文地址:https://blog.csdn.net/iteye_16284/article/details/82373247

【C++ Primer】自己动手编写函数 atoi(char *str)相关推荐

  1. C语言九十四之请编写函数fun(char *str, int n),其功能是:使字符串str的前导*号不能多余n个,若多于n个,则删除多余的*号,若少于或等于n个,则不做处理。

    1.题目 规定输入的字符串中只包含字母和*号,请编写函数fun(char *str, int n),其功能是:使字符串str的前导*号不能多余n个,若多于n个,则删除多余的*号,若少于或等于n个,则不 ...

  2. C语言 请编写函数CHG(char *S) 把字符数组左移后逆转

    6-2 请编写函数CHG(char *S) (10 分) 请编写函数CHG(char S)实现程序功能: 把S字符串中的所有字符左移一个位置,串中的第一个字符移到最后,之后把已处理的字符串逆转后仍存入 ...

  3. c语言定义函数insert,c语言编写函数insert(char s1[ ],char s2[ ],int pos),实现在字符串s1中的指定位置pos处插入字符串s2。...

    满意答案 人變了心從未 推荐于 2016.10.18 采纳率:54%    等级:12 已帮助:6450人 你写这个貌似不能实现额 用string.h库很容易实现的 要是你不能用string.h的话 ...

  4. C语言编程>第九周 ④ 编写函数fun,它的功能是:利用以下所示的简单迭代方法求方程cos(y)-y=0的一个实根。yn+1=cos(yn)

    例题:编写函数fun,它的功能是:利用以下所示的简单迭代方法求方程cos(y)-y=0的一个实根. yn+1=cos(yn) 迭代步骤如下: (1)取y1初值为0.0. (2)y0=y1,把y1的值赋 ...

  5. c语言atoi的头文件,atoi函数(atoi函数在那个头文件)

    需要导入头文件#include 将字符串转换成一个整数并返回结果.参数str 以数字开头,当函数从str 中读到非数字字符则结束转换并将结果返回.例如, int i = atoi( . atoi(s. ...

  6. Problem H 编写函数atof()

    Problem Description 编写函数atof(char s[])和read_line(char str[], int n),将字符串转换为对应数值的小数. 测试程序为: #include ...

  7. 6-5 从键盘读入一串字符后去除首尾字符后的字符串按降序排序 (10 分)请编写函数Sort函数,将字符串中除首、尾字符外的其余字符按降序排列。函数接口定义:void Sort( char *

    6-5 从键盘读入一串字符后去除首尾字符后的字符串按降序排序 (10 分) 请编写函数Sort函数,将字符串中除首.尾字符外的其余字符按降序排列. 函数接口定义: void Sort( char *p ...

  8. 长理2017 f0803 求和:s=1-(1/2)+(1/3)-(1/4).........+(1/n),编写函数fun(char*s),实现字符串的逆置编写程序从基类派生圆柱,设计(均为可运行代码)

    求和:s=1-(1/2)+(1/3)-(1/4).........+(1/n), #include <stdio.h>int main() {int n,i;double s=1.0;sc ...

  9. 自己动手编写CSDN博客备份工具-blogspider之源码分析(3)

    作者:gzshun. 原创作品,转载请标明出处! 来源:http://blog.csdn.net/gzshun 周星驰:剪头发不应该看别人怎么剪就发神经跟流行,要配合啊!你看你的发型,完全不配合你的脸 ...

最新文章

  1. mysql delete 注意
  2. 使用 word 在 oschina 上写博客
  3. 启明云端分享|大家都知道ESP32-C3是乐鑫5月刚量产的芯片,大家都传是取代ESP8266的,目前也确实有很多客户升级应用选择替换,那Esp8266与Esp32-C3 从硬件到应用开发有哪些不同呢
  4. 语言教案 小小计算机,小班《小小手机本领大》语言教案
  5. Forms身份验证基本原理
  6. 计算机组装与维护配置清单作业,计算机组装与维护 作业汇.doc
  7. for ihs linux_Install WAS6.1+IHS for Linux(64bit)
  8. QZone V8改版之“相册从模糊到清晰”
  9. python将图片转换为Framebuffer裸数据格式(终端显示图片)
  10. 无人车企哪家强?通用第一Waymo第二,苹果特斯拉进黑榜
  11. 摩游世纪CEO宋啸飞:Html5增长趋势已可见
  12. 海南凤凰机场智能通信解决方案
  13. 【3】令人头疼—在安装pyenchant外部包时产生的意外事件
  14. memcpy和memmove以及memcmp
  15. WPF 实现无边框窗口两种方法
  16. win2003 iis 设置301转向
  17. Python之Sqlitespy中选出两表中以id相同的元素
  18. Daily English Jun 14,2011
  19. WinCE 6.0 禁用触摸屏的几种方法
  20. 计算机键盘规律,计算机盲打键盘指法图顺口溜

热门文章

  1. mysql linux版本 rpm_Linux下查看MySQL版本及rpm里有没有MySQL
  2. python ui自动化配置文件,Python+Selenium进行UI自动化测试项目中,常用的小技巧2:读取配置文件(configparser,.ini文件)...
  3. 《漫画算法2》源码整理-9 股票交易最大收益
  4. Java synchronized 详解
  5. 编码练习——Java-1-基础
  6. WebAssembly 系列(一):生动形象地介绍 WebAssembly
  7. Spring - Java/J2EE Application Framework 应用框架 第 16 章 通过Spring使用远程访问和web服务
  8. 160家优秀国外技术公司博客
  9. 《疯狂动物城》电脑壁纸
  10. 意大利罗马银行连环抢劫案告破 一名警察涉案