新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > C語(yǔ)言實(shí)現(xiàn)將字符串轉(zhuǎn)換為數(shù)字的方法

        C語(yǔ)言實(shí)現(xiàn)將字符串轉(zhuǎn)換為數(shù)字的方法

        作者: 時(shí)間:2016-11-27 來(lái)源:網(wǎng)絡(luò) 收藏
        這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)將字符串轉(zhuǎn)換為數(shù)字的方法,涉及系統(tǒng)函數(shù)atoi()函數(shù)的使用技巧,需要的朋友可以參考下

        本文實(shí)例講述了C語(yǔ)言實(shí)現(xiàn)將字符串轉(zhuǎn)換為數(shù)字的方法。分享給大家供大家參考。具體實(shí)現(xiàn)方法如下:

        本文引用地址:http://www.104case.com/article/201611/322539.htm

        C語(yǔ)言提供了幾個(gè)標(biāo)準(zhǔn)庫(kù)函數(shù),可以將字符串轉(zhuǎn)換為任意類型(整型、長(zhǎng)整型、浮點(diǎn)型等)的數(shù)字。以下是用atoi()函數(shù)將字符串轉(zhuǎn)換為整數(shù)的一個(gè)例子:

        代碼如下:
        # include
        # include
        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. ",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)換為長(zhǎng)整型值
        strtod()將字符串轉(zhuǎn)換為雙精度浮點(diǎn)型值,并報(bào)告不能被轉(zhuǎn)換的所有剩余數(shù)字
        strtol()將字符串轉(zhuǎn)換為長(zhǎng)整值,并報(bào)告不能被轉(zhuǎn)換的所有剩余數(shù)字
        strtoul()將字符串轉(zhuǎn)換為無(wú)符號(hào)長(zhǎng)整型值,并報(bào)告不能被轉(zhuǎn)換的所有剩余數(shù)字
        ------------------------------------------------------------------------

        將字符串轉(zhuǎn)換為數(shù)字時(shí)可能會(huì)導(dǎo)致溢出,如果你使用的是strtoul()這樣的函數(shù),你就能檢查這種溢出錯(cuò)誤。請(qǐng)看下例:

        復(fù)制代碼代碼如下:
        # include
        # include
        # include
        void main(void);
        void main (void)
        {
        char* str = "1234567891011121314151617181920" ;
        unsigned long num;
        char * leftover;
        num = strtoul(str, &leftover, 10);
        printf("Original string: %s",str);
        printf("Converted number: %1u" , num);
        printf("Leftover characters: %s" , leftover);
        }

        在上例中,要轉(zhuǎn)換的字符串太長(zhǎng),超出了無(wú)符號(hào)長(zhǎng)整型值的取值范圍,因此,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語(yǔ)言程序設(shè)計(jì)有所幫助。



        評(píng)論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 迭部县| 建湖县| 汪清县| 搜索| 乌兰县| 长垣县| 景谷| 托克托县| 云和县| 澄迈县| 姜堰市| 昭觉县| 甘肃省| 安塞县| 望奎县| 新源县| 乡城县| 儋州市| 句容市| 四平市| 莎车县| 五华县| 双峰县| 廉江市| 肇东市| 镇康县| 修武县| 疏勒县| 铅山县| 绿春县| 巢湖市| 醴陵市| 金寨县| 沅江市| 临夏县| 招远市| 团风县| 邵阳县| 双桥区| 普定县| 徐闻县|