当前位置:C++技术网 > 资讯 > atoi接口实现方法,自己实现atoi函数功能

atoi接口实现方法,自己实现atoi函数功能

更新时间:2015-12-25 22:05:55浏览次数:1+次

    为了防止函数名与C语言库函数atoi冲突,所以将这个函数加了_my。下面是代码运行的截图:

atoi接口实现使用效果图

【atoi接口实现使用效果图】

    实现的atoi_my的代码如下:


int atoi_my(char* pstr)
{
	//atoi接口实现方法
	int intVal = 0; // 返回值

	// 符号, 正数为 1, 负数为 -1
	int sign = 1;

	// 判断指针是否为空 pstr == NULL
	if(pstr == 0) 
		return 0;

	// 跳过前面的空格字符 ' ' 的 ascii 值 0x20
	while(' '== *pstr)
		pstr++;

	// 判断正负号
	if('-'==*pstr)
		sign = -1; 
	if('-'==*pstr || '+'==*pstr) 
		pstr++;// 如果是符号, 指针后移
	while(*pstr >= '0' && *pstr <= '9') 
	{
		// 逐字符转换成整数
		// 转换说明
		// ascii 的 '0' = 0x30 转换为int以后 - 0x30即为整型的0
		// ascii 的 '1' = 0x31 转换为int以后 - 0x30即为整型的1
		// ...
		intVal = intVal * 10 + (((int)*pstr)-0x30);// 十进制即每位乘10, 结果累加保存
		pstr++;// 指针后移
	}
	return intVal * sign;// 返回结果,int32 范围是: 2147483647 ~ -2147483648, 此处会进行溢出运算
}
      为了测试正确性,我们就要写一个测试函数main,调用一下这个函数,传入一个数字字符串,看看输出如何,测试代码如下:



#include <stdio.h>
 void main()
 {
	 printf("字符串【123451】转换后的数字为:%d\n",atoi_my("123451"));
	 printf("C++技术网http://www.cjjjs.com\n\n\n");
 }
      atoi_my函数定义放在main之前即可。至于函数的实现原理,就不分析了。你有兴趣的话,可以自己分析一下。