atoi函数实现

来源:互联网 发布:开元微信java api 编辑:程序博客网 时间:2024/05/16 12:56

int atoi(const char * str);

函数说明参考:

http://www.cplusplus.com/reference/clibrary/cstdlib/atoi/

功能:将str里整数字符,翻成整数

该函数:1:忽略开始的空白字符串,知道非空白的字符开始转换

2:处理正负+ - 字符

3:如果字符串为空,或者字符串里首字符不为数字或者正负号,不做转换

Return Value

On success, the function returns the converted integral number as an int value.
If no valid conversion could be performed, a zero value is returned.
If the correct value is out of the range of representable values, INT_MAX or INT_MIN is returned.

#include <stdio.h>#include <iostream>#define MIN_INT (-2147483648)#define MIN_INT (2147483647)using namespace std;//转换,没有进行最大值检查int myatoi(const char* str){int sign = 1;if (!str)return 0;int intvalue = 0;while (*str ==' ')str++;//找到第一个非空白字符if (*str == '-')//检查+-号{sign = -1;str++;}else if (*str == '+'){sign = 1;str++;}while(*str!='\n'){if (*str <='9'&&*str>='0')//是否为数字{intvalue = 10*intvalue + *str - '0';str++;}else break;}return intvalue*sign;}int main(){char *s = "12345 6s78";char *s1 = "   3245609ac34";char *s2 = "s145553290";int m = atoi(s);int mym = myatoi(s);int m1 = atoi(s1);int mym1 = myatoi(s1);int m2 = atoi(s2);int mym2 = atoi(s2);cout<<m<<":"<<mym<<"&&"<<m1<<":"<<mym1<<"&&"<<m2<<":"<<mym2<<endl;system("pause");return 0;}