int atoi(char *str) 函数实现

来源:互联网 发布:太阳能资源分布知乎 编辑:程序博客网 时间:2024/05/29 17:06

【问题描述】:将输入字符串转换为整型输出;

例如,“123”-》123 ;

“-123”-》-123;


【解题思路】:最关键的一点是,要知道ASC II码是个什么东西,所谓ASC II码只是字符(人类能识别的自然语言),在内存当中的表现形式(二进制位);

例如,字符  ASC II码(本身在内存中是以二进制形式存放,但人类为了书写和记忆的方便,时常用十六进制或十进制表示)

      '0'   48

      '1'   49

      '2'   50

      '3'


代码:
#include <iostream>using namespace std;#define MAX 100int atoi(char *str){//分两步:1.首先判断第一个字符是否是'-';int ret=0,sign=1;if(*str == '-')sign=-1;else{if (*str == '+'){sign = +1;} else{ret=*str-'0'; }}//2.然后再循环判断其他字符str++;while(*str != '\0'){ret=ret*10 + (*str-'0'); //1*10 + 2str++;}//3.最后一步返回 符号*数字return sign*ret;}int main(){//输入一个字符串cout<<endl<<"Please enter a string: ";char array[MAX];cin>>array;//声明并初始化指针char *str=array;//把字符串转换成整型之后输出cout<<"string to int:";cout<<atoi(str)<<endl<<endl;return 0;}