模拟实现atoi函数

atoi函数可以将字符串中的数字以整数形式读出来

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include <ctype.h>
#define INT_MAX 2147483647
#define INT_MIN -2147483646
//模拟实现atoi函数
long long  my_atoi(const char *str)
{
	long long  ret = 0;//定义一个long long 类型防止数据溢出
	int p = 1;
	assert (str);
	while (isspace(*str))//检测空字符
	{
		str++;
	}
	if (*str=='-')//判断是否含有正负号
	{
		p = -1;
		str++;
	}
	else if (*str=='+')
	{
		;
	}
	else 
	{
		return 0;
	}
	if (((ret*10 + p*(*str-'0'))>INT_MAX)||((ret*10 + p*(*str-'0')))<(INT_MIN))//判断是否溢出
	{
		printf("数据溢出\n");
		return 0;
	}
	
	while((*str)&&(isdigit(*str)))
	{
		ret = ret*10 + p*(*str-'0');//将一个字符的数字转换为数字
		str++;
	}
	return ret;
}
int main ()
{
	char arr[] = "   -12#3";
  long long  ret = my_atoi(arr);
 int  bat = atoi(arr) ;
 printf ("%d\n",bat);
  printf ("ret = %ld\n",ret);
  return 0;
}

 

posted @ 2017-02-22 21:20  chan0311  阅读(138)  评论(0编辑  收藏  举报