1. 程式人生 > >C語言中將數字轉換為字串的方法

C語言中將數字轉換為字串的方法

C語言提供了幾個標準庫函式,可以將任意型別(整型、長整型、浮點型等)的數字轉換為字串。以下是用itoa()函式將整數轉換為字串的一個例子:

# include <stdio. h>
# include <stdlib. h>
void main (void);
void main (void)
{
    int num = 100;
    char str[25];
    itoa(num, str, 10);
    printf("The number 'num' is %d and the string 'str' is %s. \n" ,
                       num, str);
}
  
itoa()函式有3個引數:第一個引數是要轉換的數字,第二個引數是要寫入轉換結果的目標字串,第三個引數是轉移數字時所用的基數。在上例中,轉換基數為10。

下列函式可以將整數轉換為字串:
----------------------------------------------------------
    函式名                  作  用
----------------------------------------------------------
    itoa()                將整型值轉換為字串
    itoa()                將長整型值轉換為字串
    ultoa()               將無符號長整型值轉換為字串
----------------------------------------------------------
請注意,上述函式與ANSI標準是不相容的。能將整數轉換為字串而且與ANSI標準相容的方法是使用sprintf()函式,請看下例:    
#include<stdio.h>  
# include <stdlib. h>

void main (void);
void main (void)
{
    int num = 100;
    char str[25];
    sprintf(str, " %d" , num);
   printf ("The number 'num' is %d and the string 'str' is %s. \n" ,
                          num, str);
}
 
    在將浮點型數字轉換為字串時,需要使用另外一組函式。以下是用fcvt()函式將浮點型值轉換為字串的一個例子: 

# include <stdio. h>
# include <stdlib. h>
void main (void);
void main (void)
{
    double num = 12345.678;
    char * sir;
    int dec_pl, sign, ndigits = 3; /* Keep 3 digits of precision. * /
    str = fcvt(num, ndigits, &dec-pl, &sign); /* Convert the float
                                                 to a string. * /
    printf("Original number; %f\n" , num) ;  /* Print the original
                                                 floating-point
                                                    value. * /
    printf ("Converted string; %s\n",str);    /* Print the converted
                                                string's value. * /
    printf ("Decimal place: %d\n" , dec-pi) ; /* Print the location of
                                                 the decimal point. * /
    printf ("Sign: %d\n" , sign) ;            /* Print the sign.
                                                 0 = positive,
                                                 1 = negative. * /
}
 
fcvt()函式和itoa()函式有數大的差別。fcvt()函式有4個引數:第一個引數是要轉換的浮點型值;第二個引數是轉換結果中十進位制小數點右側的位數;第三個引數是指向一個整數的指標,該整數用來返回轉換結果中十進位制小數點的位置;第四個引數也是指向一個整數的指標,該整數用來返回轉換結果的符號(0對應於正值,1對應於負值)。

需要注意的是,fcvt()函式的轉換結果中並不真正包含十進位制小數點,為此,fcvt()函式返回在轉換結果中十進位制小數點應該佔據的位置。在上例中,整型變數dec_pl的結果值為5,因為在轉換結果中十進位制小數點應該位於第5位後面。如果你要求轉換結果中包含十進位制小數點,你可以使用gcvt()函式(見下表)。

下列函式可以將浮點型值轉換為字串:


-------------------------------------------------------------------------
    函式名             作  用
-------------------------------------------------------------------------
    ecvt()    將雙精度浮點型值轉換為字串,轉換結果中不包含十進位制小數點
    fcvt()    以指定位數為轉換精度,餘同ecvt()
    gcvt()    將雙精度浮點型值轉換為字串,轉換結果中包含十進位制小數點
-------------------------------------------------------------------------