2011/07/12

[vc 2008]字串轉數字atoi()

原本在vc6下面跑的好好得,轉到vs 2008就發生這個問題.......

我先描述一下狀況:

[code]
char szBuffer[16]={0};
sprintf(szBuffer,"%s","3590525100");
int nNumber = atoi(szBuffer);
[/code]
原先我預期要得到3590525100這個數字,但是我卻得到2147483647這個數字,原因是因為atoi()回傳值型態為int,正整數部份最大只能計算到2147483647(即0x7FFFFFFF)。

解決方法:改用 sscanf()

[code]
char szBuffer[16]={0};
sprintf(szBuffer,"%s","3590525100");
unsigned int nNumber = 0;
sscanf(Buffer,"%u",&nNumber);
[/code]


然後我就順利得到3590525100這個數字了^^

ref:
JeffHung.Blog
陳鍾誠的網站