库函数atoi()的实现
来源:互联网 发布:门禁一卡通软件设置 编辑:程序博客网 时间:2024/06/02 12:51
int atoi(const char *nptr);
如果第一个非空格字符存在,是数字或者正负号则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整形数。否则,返回零。
这里需注意:如果字符串是非法输入:字符串为空,只有一个‘+’或‘-’,非数字等返回的是整形数0;而如果输入是“0”,返回的也是整形数0。对于这样的情况,atoi()是通过一个全局变量来区分的。还有一点:比如输入是“123abc”,则atoi()也能正确执行,返回整形数123。
enum Status {kValid = 0, kInvalid};int g_nStatus = kValid;int StrToInt(const char* str){ g_nStatus = kInvalid; long long num = 0; if(str != NULL && *str != '\0') { bool minus = false; if(*str == '+') str ++; else if(*str == '-') { str ++; minus = true; } if(*str != '\0') { num = StrToIntCore(str, minus); } } return (int)num;}long long StrToIntCore(const char* digits, bool minus){ long long num = 0; const char *digit = digits; while(*digit != '\0') { if(*digit >= '0' && *digit <= '9') { int flag = minus ? -1 : 1; num = num * 10 + flag * (*digit - '0'); if((!minus && num > 0x7FFFFFFF) || (minus && num < (signed int)0x80000000)) //考虑是否溢出 { num = 0; break; } digit++; } else { // num = 0; break; } } if(*digit == '\0' || digit - digits > 0) { g_nStatus = kValid; } return num;}参考《剑指offer》
0 0
- 库函数atoi()的实现
- C库函数atoi的实现
- 实现 atoi库函数
- 模拟实现库函数atoi
- 库函数atoi c语言实现
- C++常用库函数atoi,itoa,strcpy,strcmp的实现
- C库函数atoi的实现和一些讨论
- [转]C++常用库函数atoi,itoa,strcpy,strcmp的实现
- C++常用库函数atoi,itoa,strcpy,strcmp的实现
- C++常用库函数atoi,itoa,strcpy,strcmp的实现
- C++常用库函数atoi,itoa,strcpy,strcmp的实现
- C++常用库函数atoi,itoa,strcpy,strcmp的实现
- C各类库函数的实现(atoi,strcpy,strcmp...)
- C++常用库函数atoi,itoa,strcpy,strcmp的实现
- 【c语言】 模拟实现库函数的atoi函数
- C++常用库函数atoi,itoa,strcpy,strcmp的实现
- C++ 常用库函数atoi,itoa,strcpy,strcmp的实现
- 库函数atoi
- plymouth
- sd卡文件系统
- cocos2dx2.x版本的pthread的一些注意事项
- Java线程池
- hdu-1262-寻找素数对
- 库函数atoi()的实现
- linux下终端使用有道翻译
- Java OCR 图像智能字符识别技术,可识别中文
- 一位拿到百度Offrer的过来人
- Cocos2d-x 3.1 一步步做屏幕适配
- linux的同步,异步,阻塞,非阻塞
- 浅谈并发与并行(一)
- hdu-1108-最小公倍数
- C++ primer(第五版) 练习 6.54 个人 code