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元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

