簡單的實現atoi函數

    一、原型:

             int atoi(const char *nptr);
二、函數說明
           參數nptr字符串,如果第一個非空格字符存在,是數字或者正負號則開始做類型轉換,之後檢測到非數字(包括結束符 \0) 字符時停止轉換,返回整型數。否則,返回零,
頭文件: #include <stdlib.h>
三、函數簡單實現:
#include <iostream>
using namespace std;

isspace(int x)
{
	if(x==' '||x=='\t'||x=='\n'||x=='\f'||x=='\b'||x=='\r')
		return 1;
	else  
		return 0;
}
isdigit(int x)
{
	if(x<='9' && x>='0')         
		return 1; 
	else 
		return 0;
	
}
int My_atoi(const char *nptr)
{
	int c;              /* current char */
	int total;          /* current total */
	int sign;           /* if '-', then negative, otherwise positive */
	
	                    /* skip whitespace */
	while ( isspace((int)(unsigned char)*nptr) )
		++nptr;
	
	c = (int)(unsigned char)*nptr++;
	sign = c;                               /* save sign indication */
	if (c == '-' || c == '+')
		c = (int)(unsigned char)*nptr++;    /* skip sign */
	
	total = 0;
	
	while (isdigit(c)) 
	{
		total = 10 * total + (c - '0');     /* accumulate digit */
		c = (int)(unsigned char)*nptr++;    /* get next char */
	}
	
	if (sign == '-')
		return -total;
	else
		return total;   /* return result, negated if necessary */
}

int main()
{
	char str[256];
	cout<<"請輸入要轉化爲整數的字符串:";
	cin>>str;
	cout<<"轉化爲整數後輸出是:";
	cout<<My_atoi(str)<<endl;
	return 0;
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章