字串和數字的相互轉換

old_boy_1991發表於2014-07-20
1、數字轉字串:使用sprintf()函式

char str[10];
int a=1234321;
sprintf(str,"%d",a);
--------------------
char str[10];
double a=123.321;
sprintf(str,"%.3lf",a);
--------------------
char str[10];
int a=175;
sprintf(str,"%x",a);//10進位制轉換成16進位制,如果輸出大寫的字母是sprintf(str,"%X",a)
--------------------
char *itoa(int value, char* string, int radix); 
同樣也可以將數字轉字串,不過itoa()這個函式是平臺相關的(不是標準裡的),故在這裡不推薦使用這個函式。

2、字串轉數字:使用sscanf()函式

char str[]="1234321";
int a;
sscanf(str,"%d",&a);
.............
char str[]="123.321";
double a;
sscanf(str,"%lf",&a);
.............
char str[]="AF";
int a;
sscanf(str,"%x",&a); //16進位制轉換成10進位制

另外也可以使用atoi(),atol(),atof().

2.1 atof()

atof(將字串轉換成浮點型數)
相關函式 atoiatolstrtodstrtolstrtoul
表標頭檔案 #include <stdlib.h>
定義函式 double atof(const char *nptr);
函式說明 atof()會掃描引數nptr字元串,跳過前面的空格字元,直到遇上數字或正負符號才開始做轉換,而再遇到非數字或字串結束時('\0')才結束轉換,並將結果返回。引數nptr字串可包含正負號、小數點或E(e)來表示指數部分,如123.456或123e-2。
返回值 返回轉換後的浮點型數。
附加說明 atof()與使用strtod(nptr,(char**)NULL)結果相同。
範例 /* 將字串a 與字串b轉換成數字後相加*/
#include<stdlib.h>
intmain()
{
char*a="-100.23";
char*b="200e-2";
doublec;
c=atof(a)+atof(b);
printf(“c=%.2lf\n”,c);
return0;
}
執行 c=-98.23

相關文章