2011-10-09 86 views

回答

1

快速谷歌搜索後:

可以使用ctype.h構建功能如下:

int isnumeric(char *str) 
{ 
    while(*str) 
    { 
    if(!isdigit(*str)) 
     return 0; 
    str++; 
    } 

    return 1; 
} 
+0

行使,谷歌福 –

+2

我不認爲小數點(」。 ')或其他特定於語言環境的分隔符將通過該測試。例如,「0.5」將會失敗(我認爲這是嚴格的數字),而「1,000」也會失敗(可能會或可能不會被認爲是「數字」)。 – Steve

+0

從鍵盤輸入的數字是一個int類型而不是char類型。 – user7

4

您可以使用strtol

只是傳遞一個第二個參數不同於NULL

•若endptr不爲NULL,與strtol()保存在* endptr第一 無效字符的地址。如果根本沒有數字,strtol() 將nptr的原始值存儲在* endptr中(並返回0)。特別是,在 中,如果* nptr不是'\ 0',而是**返回時endptr是'\ 0',則整個字符串都是有效的。

您還可以看到strtoull大型無符號整數,或者strtofstrtodstrtold檢查十進制數。

如果解析非常大的數字,最好的解決方案是逐個字符地讀取,檢查值並將其存儲在適當的數據結構中的每一步。

但請記住,如果您嘗試此解決方案,則必須使用extern庫來處理大數字,或者使用其涉及的約束來重寫所需的部分。

+1

更正大多數使用案例,但您可能需要小心。例如,請參閱[我們如何將字符串轉換爲int以獲得非常大的整數值?](http://stackoverflow.com/q/7697637/2509)。你如何測試取決於你想做什麼**做的結果。 – dmckee

相關問題