C語言實(shí)現(xiàn)將字符串轉(zhuǎn)換為數(shù)字的方法
本文實(shí)例講述了C語言實(shí)現(xiàn)將字符串轉(zhuǎn)換為數(shù)字的方法。分享給大家供大家參考。具體實(shí)現(xiàn)方法如下:
C語言提供了幾個(gè)標(biāo)準(zhǔn)庫函數(shù),可以將字符串轉(zhuǎn)換為任意類型(整型、長整型、浮點(diǎn)型等)的數(shù)字。以下是用atoi()函數(shù)將字符串轉(zhuǎn)換為整數(shù)的一個(gè)例子:
# 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ù)只有一個(gè)參數(shù),即要轉(zhuǎn)換為數(shù)字的字符串。atoi()函數(shù)的返回值就是轉(zhuǎn)換所得的整型值。
下列函數(shù)可以將字符串轉(zhuǎn)換為數(shù)字:
------------------------------------------------------------------------
函數(shù)名 作 用
------------------------------------------------------------------------
atof() 將字符串轉(zhuǎn)換為雙精度浮點(diǎn)型值
atoi() 將字符串轉(zhuǎn)換為整型值
atol() 將字符串轉(zhuǎn)換為長整型值
strtod() 將字符串轉(zhuǎn)換為雙精度浮點(diǎn)型值,并報(bào)告不能被轉(zhuǎn)換的所有剩余數(shù)字
strtol() 將字符串轉(zhuǎn)換為長整值,并報(bào)告不能被轉(zhuǎn)換的所有剩余數(shù)字
strtoul() 將字符串轉(zhuǎn)換為無符號(hào)長整型值,并報(bào)告不能被轉(zhuǎn)換的所有剩余數(shù)字
------------------------------------------------------------------------
將字符串轉(zhuǎn)換為數(shù)字時(shí)可能會(huì)導(dǎo)致溢出,如果你使用的是strtoul()這樣的函數(shù),你就能檢查這種溢出錯(cuò)誤。請(qǐng)看下例:
# 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)換的字符串太長,超出了無符號(hào)長整型值的取值范圍,因此,strtoul()函數(shù)將返回ULONG_MAX(4294967295),并使。char leftover指向字符串中導(dǎo)致溢出的那部分字符;同時(shí),strtoul()函數(shù)還將全局變量errno賦值為ERANGE,以通知函數(shù)的調(diào)用者發(fā)生了溢出錯(cuò)誤。函數(shù)strtod()和strtol()處理溢出錯(cuò)誤的方式和函數(shù)strtoul()完全相同,你可以從編譯程序文檔中進(jìn)一步了解這三個(gè)函數(shù)的有關(guān)細(xì)節(jié)。
希望本文所述對(duì)大家的C語言程序設(shè)計(jì)有所幫助。
- C語言字符串操作總結(jié)大全(超詳細(xì))
- c語言字符數(shù)組與字符串的使用詳解
- 在C語言中比較兩個(gè)字符串是否相等的方法
- C語言中查找字符在字符串中出現(xiàn)的位置的方法
- C語言切割多層字符串(strtok_r strtok使用方法)
- C語言字符函數(shù)、內(nèi)存函數(shù)功能及實(shí)現(xiàn)代碼
- C語言編程中分配內(nèi)存空間的相關(guān)函數(shù)
- C語言中字符串的內(nèi)存地址操作的相關(guān)函數(shù)簡介
- C語言全部內(nèi)存操作函數(shù)的實(shí)現(xiàn)詳細(xì)講解
- C語言進(jìn)階教程之字符串&內(nèi)存函數(shù)
相關(guān)文章
淺析成員函數(shù)和常成員函數(shù)的調(diào)用
下面小編就為大家?guī)硪黄獪\析成員函數(shù)和常成員函數(shù)的調(diào)用。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考,一起跟隨小編過來看看吧2016-05-05
C++實(shí)現(xiàn)和電腦對(duì)戰(zhàn)三子棋實(shí)例
大家好,本篇文章主要講的是C++實(shí)現(xiàn)和電腦對(duì)戰(zhàn)三子棋實(shí)例,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下2022-01-01
詳解windows下C/C++的內(nèi)存泄露檢測(cè)
C/C++由于其沒有垃圾回收機(jī)制,所以內(nèi)存的釋放一直以來都依靠于程序員的手工釋放,因此極其容易出現(xiàn)內(nèi)存泄露的問題,而在比較大的程序之中,查找內(nèi)存泄露是一件比較困難的事情,所以我們需要一些簡便的方法來檢測(cè)內(nèi)存泄露,避免內(nèi)存泄露導(dǎo)致設(shè)備崩潰2021-06-06

