模拟实现C库的atoi和itoa
来源:互联网 发布:佳为软件 编辑:程序博客网 时间:2024/06/06 09:23
1、C库的atoi的模拟实现
atoi的作用就是将字符串转为整形,它的接口函数是:
int atoi ( const char * str );
要模拟实现C库的atoi函数需要考虑以下几种特殊情况:
1>、空串,返回0
2>、是否存在空格,如果全部是空格呢?全部是空格,返回0
3>、是否存在符号位
4>、符号位之后是否是全0,返回0
5>、是否存在特殊字符,特殊字符指的是字母,字符,空格等(指出现在正确的数字之后的特殊字符)
6>、是否会溢出,溢出了如何解决?
7>、空串和全部是空格或者全部是0都返回的是正数0,如何区分这种情况呢?设置一个全局的变量,如果是不同的情况则设置成不同的值。
代码实现如下:
enum State{ EMPTY, ALLZERO, ALLSPACE,};int state = EMPTY; //该全局变量是用来决定返回的0是哪一个情况int Atoi(const string& str){ int num = 0; if (str.empty()) //是空串 return 0; char *pstr = (char *)str.c_str(); while (isspace(*pstr))//是否存在空格 { ++pstr; } if (*pstr == '\0') //全部是空格 { state = ALLSPACE; return 0; } //确定符号位 int flag = 1; //正数 if (*pstr == '-') { flag = -1; pstr++; } else if (*pstr == '+') { pstr++; } while (*pstr == '0') //判断是否存在0 { pstr++; } if (*pstr == '\0') //全部是字符0 { state = ALLZERO; return 0; } while (*pstr != '\0') { if (isdigit(*pstr)) //是数字 { num = num * 10 + flag*(*pstr - '0'); if ((flag == 1 && num >= 0x7FFFFFFF) || (flag == -1 && num <= 0x80000000) ) //判断是否溢出 { num = 0; } } ++pstr; } return num;}
2、C库的itoa的模拟实现
itoa的作用就是将整形转为字符串,它的接口函数是:
char * itoa ( int value, char * str, int base );
需要考虑负数的情况
代码实现如下:
void Itoa(int num, char *str){ char *left = str; int flag = num; if (num < 0) //考虑到负数的情况 num = -num; while (num > 0) { *str++ = num % 10 + '0'; num /= 10; } if (flag < 0) { *str++ = '-'; } *str = '\0'; //此时是逆序存放的,需要翻转过来 char *right = str - 1; while (left < right) { char tmp = *left; *left = *right; *right = tmp; ++left; --right; }}
阅读全文
0 0
- 模拟实现C库的atoi和itoa
- 模拟实现c库的atoi和itoa
- 模拟实现C库里的itoa()函数和atoi()函数
- 模拟实现C库的atoi和itoa——题集(二十三)
- atoi和itoa的C实现
- atoi & itoa的c实现
- 模拟实现atoi、itoa
- 模拟c库函数atoi和itoa
- atoi和itoa的实现
- atoi和itoa的实现
- atoi 和itoa的实现
- atoi和itoa的实现
- atoi 和 itoa的实现
- atoi和itoa的实现
- 【字符串】模拟实现atoi和itoa
- 模拟实现atoi和itoa函数
- 模拟itoa和atoi
- 模拟C库中atoi与itoa
- a标签
- javascript 使用FormData实现图片/文件异步上传
- JqGrid 实现将数据按规则插入到指定位置
- jsp获取JDK、系统、服务器信息
- 手机网站使用mip的问题
- 模拟实现C库的atoi和itoa
- 程序员笔试知识点总结之C++
- PTS铂金版横空出世!想做双11?简单!
- 可用于生产环境的php的编译参数列表
- 阻止a标签默认行为的几种简单方法
- 在不同屏幕和设备上创建用户体验设计的8个步骤
- python爬虫爬取女u番号和磁力链接,封面,保存到csv文件
- DBUnit数据库测试
- 机器学习实战_07AdaBoost元算法提高分类性能