博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

函数atoi的实现

Posted on 2011-08-16 08:54  ChessYoung  阅读(189)  评论(0编辑  收藏  举报

注意的问题是:正负号;是否越界,也即是否全是数字;参数判断,一定要保证合法,不合法的中断运行

#include "stdafx.h"
#include <iostream>
#include <assert.h>
using namespace std;

int atoi2(char *str);

int main(void)
{
	char *s = "+1a345";
	int a = atoi2(s);

	cout << a;

	return 0;
}

int atoi2( char *str )
{
	assert(str != NULL);
	int total = 0;
	int signd = 1;
	
	if ( '-' == *str)
	{
		signd = -1;
		str++;
	}
	else
		if ( '+' == *str)
		{
			str++;
		}

	char c;
	while (c = *str++)
	{
		assert(c>'0' && c<'9');
		total = total*10 + (c - '0');
	}
	
	return total*signd;
}