标准库函数atoi用于将字符串类型的数据转换为整形数据:在转换过程中要考虑空指针、空字符串""、正负号,溢出等情况
这里是将字符串str转换为32位整型,其正数的最值为0x7FFFFFFF,负数的最小值为0x80000000(可参考有符号类型的最小负数的补码的由来),通过这两个值来判断是上溢还是下溢,此外,用一个全局变量来表明是否是非法输入的问题。
代码如下:(vs2010调试正确)
1 //实现atoi_32函数 2 //正数数的最大值为0x7FFFFFFF,最小值为0x80000000,考虑数字会溢出的情况 3 #include <stdio.h> 4 #include <stdlib.h> 5 #include <ctype.h> 6 7 enum {kValid = 0,kInvalid}; 8 int g_nStatus = kValid; //全局变量用于判断是非法输入还是字符串为空 9 10 long long StrToInt(const char *s,int sign) 11 { 12 long long num = 0; 13 while(*s != '