1 #include<stdio.h> 2 enum Status {KValid = 0 , KInvalid}; 3 int g_nStatus = KValid; 4 long StrToIntCore( char *str, bool minus) 5 { 6 long num = 0 ; 7 while (*str != ' \0 ' ) 8 { 9 if (*str > ' 0 ' && *str< ' 9 ' ) 10 { 11 int flag = minus ? - 1 : 1 ; 12 num = num * 10 + flag*(*str - ' 0 ' ); 13 if ((!minus && num > 0x7FFFFFFF )||(minus && num <(signed int ) 0x80000000 )) 14 { 15 num = 0 ; 16 break ; 17 } 18 str++ ; 19 } 20 else 21 { 22 num = 0 ; 23 break ; 24 } 25 } 26 if (*str == ' \0 ' ) 27 { 28 g_nStatus = KValid; 29 } 30 return num; 31 } 32 int StrToInt( char * str) 33 { 34 g_nStatus = KInvalid; 35 long num = 0 ; 36 if (*str != NULL && *str != ' \0 ' ) 37 { 38 bool minus = false ; 39 if (*str == ' + ' ) 40 str++ ; 41 else if (*str == ' - ' ) 42 { 43 str++ ; 44 minus = true ; 45 } 46 if (*str != ' \0 ' ) 47 { 48 num = StrToIntCore(str,minus); 49 } 50 } 51 return int (num); 52 } 53 54 void main() 55 { 56 printf( " %d " ,StrToInt( " -12 " )); 57 }
?
在前面的代碼中,把空字符串“”和只有一個正號或負號的情況都考慮到了。同事還考慮整數的最大值是0x7fffffff,最小值0x80000000,一次要分兩種情況判斷溢出。
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
