久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

數(shù)字和字符串之間轉(zhuǎn)換相關(guān)的函數(shù)...

 darkhero 2007-03-30

怎樣將數(shù)字轉(zhuǎn)換為字符串?

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

# include <stdio.h>

# include <stdlib.h>

 

int main ()

{

    int num = 435443435;

    char str[30];

    itoa( num, str, 10 );

    printf("The number ‘num‘ is %d and the string ‘str‘ is %s. \n" , num, str );

    getchar();

    return 0;

}

 

 

 

 

 

 

 

 

itoa()函數(shù)有3個(gè)參數(shù):第一個(gè)參數(shù)是要轉(zhuǎn)換的數(shù)字,,第二個(gè)參數(shù)是要寫入轉(zhuǎn)換結(jié)果的目標(biāo)字符串,,第三個(gè)參數(shù)是轉(zhuǎn)移數(shù)字時(shí)所用的基數(shù)。在上例中,,轉(zhuǎn)換基數(shù)為10,。
----------------------------------------------------------
   
函數(shù)名                   
----------------------------------------------------------
   
itoa()                將整型值轉(zhuǎn)換為字符串
   
ltoa()                將長整型值轉(zhuǎn)換為字符串
   
ultoa()               將無符號(hào)長整型值轉(zhuǎn)換為字符串
----------------------------------------------------------

請注意,上述函數(shù)與ANSI標(biāo)準(zhǔn)是不兼容的,。能將整數(shù)轉(zhuǎn)換為字符串而且與ANSI標(biāo)準(zhǔn)兼容的方法是使用sprintf()函數(shù),,請看下例:    

#include<stdio.h> 

#include <stdlib.h>

 

int main ()

{

    int num = 123456;

    char str[50];

    sprintf(str, "--%d--" , num);

    printf ("The number ‘num‘ is %d and the string ‘str‘ is %s. \n" ,  num, str);

 

    getchar();

    return 0;

}

 

 gcvt(將浮點(diǎn)型數(shù)轉(zhuǎn)換為字符串,取四舍五入) 

char *gcvt( double number, size_t ndigits, char *buf );

gcvt()用來將參數(shù)number轉(zhuǎn)換成ASCII碼字符串,,參數(shù)ndigits表示顯示的位數(shù),。gcvt()ecvt()fcvt()不同的地方在于,gcvt()所轉(zhuǎn)換后的字符串包含小數(shù)點(diǎn)或正負(fù)符號(hào),。若轉(zhuǎn)換成功,,轉(zhuǎn)換后的字符串會(huì)放在參數(shù)buf指針?biāo)傅目臻g,。該函數(shù)返回一字符串指針,,此地址即為buf指針。

 

ecvt() :將雙精度浮點(diǎn)型值轉(zhuǎn)換為字符串,,轉(zhuǎn)換結(jié)果中不包含十進(jìn)制小數(shù)點(diǎn)

fcvt(): 以指定位數(shù)為轉(zhuǎn)換精度,,其余同ecvt()

#include <stdio.h>

#include <stdlib.h>

 

int main()

{

    double a = 123.45546;

    double b = -1234.56;

    char ptr[20] = {0};

   

    gcvt( a, 7, ptr );

    printf( "a value = %s\n",ptr );

    char *p = gcvt( b, 5, ptr );

    printf( "b value = %s\n",p );

}

 

 

怎樣將字符串轉(zhuǎn)換為數(shù)字?

下列函數(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ù)字

------------------------------------------------------------------------  

 

atof(將字符串轉(zhuǎn)換成浮點(diǎn)型數(shù))

double atof( const char *nptr );

atof()會(huì)掃描參數(shù)nptr字符串,跳過前面的空格字符,,直到遇上數(shù)字或正負(fù)符號(hào)才開始做轉(zhuǎn)換,,而再遇到非數(shù)字或字符串結(jié)束時(shí)(‘\0‘)才結(jié)束轉(zhuǎn)換,并將結(jié)果返回,。參數(shù)nptr字符串可包含正負(fù)號(hào),、小數(shù)點(diǎn)或E(e)來表示指數(shù)部分,如123.456123e-2,。該函數(shù)返回轉(zhuǎn)換后的浮點(diǎn)型數(shù),。atof()與使用strtod(nptr,(char**)NULL)結(jié)果相同。

 

atoi(將字符串轉(zhuǎn)換成整型數(shù)) 

int atoi(const char *nptr);

atoi()會(huì)掃描參數(shù)nptr字符串,,跳過前面的空格字符,,直到遇上數(shù)字或正負(fù)符號(hào)才開始做轉(zhuǎn)換,而再遇到非數(shù)字或字符串結(jié)束時(shí)(‘\0‘)才結(jié)束轉(zhuǎn)換,,并將結(jié)果返回,。該函數(shù)返回轉(zhuǎn)換后的整型數(shù)。atoi()與使用strtol(nptr,,(char**)NULL,,10),;結(jié)果相同。

 

atol(將字符串轉(zhuǎn)換成長整型數(shù)) 

long atol(const char *nptr);

atol()會(huì)掃描參數(shù)nptr字符串,,跳過前面的空格字符,,直到遇上數(shù)字或正負(fù)符號(hào)才開始做轉(zhuǎn)換,而再遇到非數(shù)字或字符串結(jié)束時(shí)(‘\0‘)才結(jié)束轉(zhuǎn)換,,并將結(jié)果返回,。該函數(shù)返回轉(zhuǎn)換后的長整型數(shù)。atol()與使用strtol(nptr,(char**)NULL,10),;結(jié)果相同,。

 

# include <stdio.h>

# include <stdlib.h>

 

int main ()

{

    char *a0 ="-1000";

    char *b0 ="456";

    int c0 = atoi( a0 )+atoi( b0 );

    printf( "atoi:  c0 = %d\n", c0 );      

   

    char *a1 = "-100.23";

    char *b1 = "200e-2";

    float c1 = atof( a1 ) + atof( b1 );

    printf( "atof:  c1 = %f\n", c1 );

   

    char *a2 = "4563453";

    char *b2 = "4563431237";

    long c2 = atol( a2 ) + atol( b2 );

    printf( "atol:  c2 = %ld\n", c2 );

}

 

strtod(將字符串轉(zhuǎn)換成浮點(diǎn)數(shù)) 

double strtod( const char *nptr, char **endptr );

strtod()會(huì)掃描參數(shù)nptr字符串,跳過前面的空格字符,,直到遇上數(shù)字或正負(fù)符號(hào)才開始做轉(zhuǎn)換,,到出現(xiàn)非數(shù)字或字符串結(jié)束時(shí)(‘\0‘)才結(jié)束轉(zhuǎn)換,并將結(jié)果返回,。若endptr不為NULL,,則會(huì)將遇到不合條件而終止的nptr中的字符指針由endptr傳回。參數(shù)nptr字符串可包含正負(fù)號(hào),、小數(shù)點(diǎn)或E(e)來表示指數(shù)部分,。如123.456123e-2。該函數(shù)返回轉(zhuǎn)換后的浮點(diǎn)型數(shù),。

 

strtol(將字符串轉(zhuǎn)換成長整型數(shù)) 

long int strtol( const char *nptr, char **endptr, int base );

strtol()會(huì)將參數(shù)nptr字符串根據(jù)參數(shù)base來轉(zhuǎn)換成長整型數(shù),。參數(shù)base范圍從236,或0,。參數(shù)base代表采用的進(jìn)制方式,,如base值為10則采用10進(jìn)制,若base值為16則采用16進(jìn)制等,。當(dāng)base值為0時(shí)則是采用10進(jìn)制做轉(zhuǎn)換,,但遇到如‘0x‘前置字符則會(huì)使用16進(jìn)制做轉(zhuǎn)換。一開始strtol()會(huì)掃描參數(shù)nptr字符串,,跳過前面的空格字符,,直到遇上數(shù)字或正負(fù)符號(hào)才開始做轉(zhuǎn)換,再遇到非數(shù)字或字符串結(jié)束時(shí)(‘\0‘)結(jié)束轉(zhuǎn)換,,并將結(jié)果返回,。若參數(shù)endptr不為NULL,則會(huì)將遇到不合條件而終止的nptr中的字符指針由endptr返回,。該函數(shù)返回轉(zhuǎn)換后的長整型數(shù),,否則返回ERANGE并將錯(cuò)誤代碼存入errno(ERANGE指定的轉(zhuǎn)換字符串超出合法范圍)

 

strtoul(將字符串轉(zhuǎn)換成無符號(hào)長整型數(shù)) 

unsigned long int strtoul(const char *nptr,char **endptr,int base);

strtoul()會(huì)將參數(shù)nptr字符串根據(jù)參數(shù)base來轉(zhuǎn)換成無符號(hào)的長整型數(shù)。參數(shù)base范圍從236,或0,。參數(shù)base代表采用的進(jìn)制方式,,如base值為10則采用10進(jìn)制,若base值為16則采用16進(jìn)制數(shù)等,。當(dāng)base值為0時(shí)則是采用10進(jìn)制做轉(zhuǎn)換,,但遇到如‘0x‘前置字符則會(huì)使用16進(jìn)制做轉(zhuǎn)換。一開始strtoul()會(huì)掃描參數(shù)nptr字符串,,跳過前面的空格字符串,,直到遇上數(shù)字或正負(fù)符號(hào)才開始做轉(zhuǎn)換,再遇到非數(shù)字或字符串結(jié)束時(shí)(‘\0‘)結(jié)束轉(zhuǎn)換,,并將結(jié)果返回,。若參數(shù)endptr不為NULL,則會(huì)將遇到不合條件而終止的nptr中的字符指針由endptr返回,。該函數(shù)返回轉(zhuǎn)換后的長整型數(shù),,否則返回ERANGE并將錯(cuò)誤代碼存入errno(ERANGE指定的轉(zhuǎn)換字符串超出合法范圍)

# include <stdio.h>

# include <stdlib.h>

int main()

{

    char a[]="1000000000abcde";

    char b[]="1000000000abcde";

    char c[]="ffffOPQRST";

    char **p;

   

    printf("a = %d, p = %s\n",strtol(a, p, 10), *p );

    printf("b = %d, p = %s\n",strtol(b, p,  2), *p );

    printf("c = %d, p = %s\n",strtol(c, p, 16), *p );

}

輸出結(jié)果為:

a = 1000000000, p = abcde

b = 512, p = abcde

c = 65535, p = OPQRST

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請遵守用戶 評(píng)論公約

    類似文章 更多