C語言實現(xiàn)將字符串轉(zhuǎn)換為數(shù)字的方法
本文實例講述了C語言實現(xiàn)將字符串轉(zhuǎn)換為數(shù)字的方法。分享給大家供大家參考。具體實現(xiàn)方法如下:
C語言提供了幾個標準庫函數(shù),可以將字符串轉(zhuǎn)換為任意類型(整型、長整型、浮點型等)的數(shù)字。以下是用atoi()函數(shù)將字符串轉(zhuǎn)換為整數(shù)的一個例子:
# include <stdlib. h>
void main (void) ;
void main (void)
{
int num;
char * str = "100";
num = atoi(str);
printf("The string 'str' is %s and the number 'num' is %d. \n",str, num);
}
atoi()函數(shù)只有一個參數(shù),即要轉(zhuǎn)換為數(shù)字的字符串。atoi()函數(shù)的返回值就是轉(zhuǎn)換所得的整型值。
下列函數(shù)可以將字符串轉(zhuǎn)換為數(shù)字:
------------------------------------------------------------------------
函數(shù)名 作 用
------------------------------------------------------------------------
atof() 將字符串轉(zhuǎn)換為雙精度浮點型值
atoi() 將字符串轉(zhuǎn)換為整型值
atol() 將字符串轉(zhuǎn)換為長整型值
strtod() 將字符串轉(zhuǎn)換為雙精度浮點型值,并報告不能被轉(zhuǎn)換的所有剩余數(shù)字
strtol() 將字符串轉(zhuǎn)換為長整值,并報告不能被轉(zhuǎn)換的所有剩余數(shù)字
strtoul() 將字符串轉(zhuǎn)換為無符號長整型值,并報告不能被轉(zhuǎn)換的所有剩余數(shù)字
------------------------------------------------------------------------
將字符串轉(zhuǎn)換為數(shù)字時可能會導(dǎo)致溢出,如果你使用的是strtoul()這樣的函數(shù),你就能檢查這種溢出錯誤。請看下例:
# include <stdlib. h>
# include <limits. h>
void main(void);
void main (void)
{
char* str = "1234567891011121314151617181920" ;
unsigned long num;
char * leftover;
num = strtoul(str, &leftover, 10);
printf("Original string: %s\n",str);
printf("Converted number: %1u\n" , num);
printf("Leftover characters: %s\n" , leftover);
}
在上例中,要轉(zhuǎn)換的字符串太長,超出了無符號長整型值的取值范圍,因此,strtoul()函數(shù)將返回ULONG_MAX(4294967295),并使。char leftover指向字符串中導(dǎo)致溢出的那部分字符;同時,strtoul()函數(shù)還將全局變量errno賦值為ERANGE,以通知函數(shù)的調(diào)用者發(fā)生了溢出錯誤。函數(shù)strtod()和strtol()處理溢出錯誤的方式和函數(shù)strtoul()完全相同,你可以從編譯程序文檔中進一步了解這三個函數(shù)的有關(guān)細節(jié)。
希望本文所述對大家的C語言程序設(shè)計有所幫助。
相關(guān)文章
C語言實現(xiàn)學(xué)生成績管理系統(tǒng)課程設(shè)計
這篇文章主要為大家詳細介紹了C語言實現(xiàn)學(xué)生成績管理系統(tǒng)課程設(shè)計,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-07-07深入理解:Java是類型安全的語言,而C++是非類型安全的語言
本篇文章是對Java是類型安全的語言,而C++是非類型安全的語言進行了詳細的分析介紹,需要的朋友參考下2013-06-06