剑指offer——字符串转换为整数
2017-04-30 12:55
375 查看
在c语言中,有一个函数我们可能不经常使用,那就是字符串转换为整数函数 atoi()
测试用例
atoi (表示 ascii to integer)是把字符串转换成整型数的一个函数 atoi( ) 函数会扫描参数 nptr字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过isspace( )函数来检测),直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。如果 nptr不能转换成 int 或者 nptr为空字符串,那么将返回 0 当字符串为空,或者输入的字符串是‘0’,atoi()是通过一个全局变量来区分的,如果非法输入,返回0,并把这个全局变量设为一个特殊标记,如果输入的是‘0’,返回0,不会设置全局变量,这样就可以区分得到的0值得情况
enum Typename { //定义输入标记 kvalid = 0, kinvakid = 1 }; int get_Typename = kvalid; //全局变量来定义标记 int StrToint(const char* str) { get_Typename = kinvakid; long long num = 0; if (str != NULL && *str != '\0') //判断传入是否为空字符 { int minus = 1; // 判断输入的字符改写之后的正负 if (*str == '+') str++; else if (*str == '-') { str++; minus = -1; } if (*str != '\0') { num = StrTointcore(str, minus); } } return num; } long long StrTointcore(const char * src, int minus) { long long num = 0; while (*src != '\0') { if (*src >= '0'&& *src <= '9') //字符为0-9 时执行转换 { num = num * 10 + minus *(*src - '0'); if ((num > 0x7FFFFFFF) || (num < 0x80000000)) //判断转换后是否上溢出还是下溢出 { num = 0; //溢出返回0 break; } src++; } else { num = 0; break; } } if (*src == '\0') { get_Typename = kvalid; } return num; }
测试用例
1、输入的字符串表示正数,负数,0 2、边界测试(最大正整数,最小负整数) 3、特殊输入测试(输入字符串为null,输入字符串为空字符串,输入的字符串有非法数字字符)
相关文章推荐
- 剑指Offer 49 把字符串转换成整数
- 剑指offer——把字符串转换成整数
- 剑指offer-----将一个字符串转换成对应的整数(模拟atoi)
- 剑指offer 面试题49 把字符串转换成整数
- 【剑指offer】把字符串转换成整数
- 剑指offer之字符串到整数的转换,例如输入字符串12345,输出整数12345.
- 剑指offer面试题(49)把字符串转换成整数
- 剑指offer-49.把字符串转换成整数
- 剑指offer——把字符串转换成整数
- 剑指Offer - 九度1508 - 把字符串转换成整数
- 剑指offer-把字符串转换为整数
- 【剑指Offer面试编程题】题目1508:把字符串转换成整数--九度OJ
- 剑指Offer--049-把字符串转换成整数
- [剑指offer][面试题49]把字符串转换成整数(待完善)
- 剑指Offer:面试题49 把字符串转换成整数
- 【剑指Offer学习】【面试题49:把字符串转换成整数】
- 剑指offer: 把字符串转换成整数
- 剑指offer题解 把字符串转换成整数(todo:考虑大整数的情况)
- 剑指offer--字符串转换为整数
- 【剑指offer-Java版】49把字符串转换为整数