C 數字與char 的轉換

2021-10-06 01:32:50 字數 4495 閱讀 6876

2 char*轉數字

int sprintf( char *buffer, const char *format [, argument] ... );

由於sprintf 跟printf 在用法上幾乎一樣,只是列印的目的地不同而已,前者列印到字串中,

後者則直接在命令列上輸出。

sprintf 使用格式化字串來指定串的格式,在格式串內部使用一些以「%」開頭的。

格式說明符(format specifications)來佔據乙個位置,在後邊的變參列表中提供相應的變數,最終

函式就會用相應位置的變數來替代那個說明符,產生乙個呼叫者想要的字串。

其比itoa()系列函式執行速度慢

//把整數123 列印成乙個字串儲存在s 中。

sprintf

(s,"%d"

,123);

//產生"123"

//小寫16 進製,寬度佔8 個位置,右對齊,左邊補0 的等寬格式

sprintf

(s,"%08x"

,4567);

//產生:"000011d7"

char *itoa (int value, char *str, int base );

itoa並不是乙個標準的c函式,它是windows特有的,如果要寫跨平台的程式,請用sprintf。

itoa()函式有3個引數:

第乙個引數是要轉換的數字,

第二個引數是要寫入轉換結果的目標字串,

第三個引數是轉移數字時所用的進製基數。

#include

//cstdlib和stdlib.h都可以

#include

//cstdio和stdio.h都可以

//如果用的是cstdio和cstdlib,要加上 using namespace std;

intmain

(void

)

輸出:

integer =

12,string = c

標頭檔案 c stdlib.h

c++ cstdlib(也可以使用stdlib.h,c++向下相容stdlib.h)

與itoa類似,只是輸入數字的取值範圍不同

標頭檔案c stdlib.h

c++ cstdlib(也可以使用stdlib.h,c++向下相容stdlib.h)

atoi是標準庫函式,itoa不是

int atoi(const char * nptr);

函式說明atoi()會掃瞄引數nptr字串,跳過前面的空格字元,直到遇上數字或正負符號才開始做轉換,而再遇到非數字或字串結束時(』\0』)才結束轉換,並將結果返回。

附加說明

atoi只支援轉換表示10進製數的字串

atoi()與使用strtol(nptr,(char**)null,10);結果相同。

標頭檔案 c stdlib.h

c++ cstdlib(也可以使用stdlib.h,c++向下相容stdlib.h)

long atol(const char *nptr);

函式說明

atol()會掃瞄引數nptr字串,跳過前面的空格字元,直到遇上數字或正負符號才開始做轉換,而再遇到非數字或字串結束時(』\0』)才結束轉換,並將結果返回。

附加說明

atol只支援轉換表示10進製數的字串

atol()與使用strtol(nptr,(char**)null,10);結果相同。

標頭檔案 c stdlib.h

c++ cstdlib(也可以使用stdlib.h,c++向下相容stdlib.h)

double atof(const char *nptr);

函式說明

atof()會掃瞄引數nptr字串,跳過前面的空格字元,直到遇上數字或正負符號才開始做轉換,而再遇到非數字或字串結束時(』\0』)才結束轉 換,並將結果返回。引數nptr字串可包含正負號、小數點或e(e)來表示指數部分,如123.456或123e-2。返回值 返回轉換後的浮點型數。

附加說明

atof只支援轉換表示10進製數的字串

atof()與使用strtod(nptr,(char**)null)結果相同。

標頭檔案 c stdlib.h

c++ cstdlib(也可以使用stdlib.h,c++向下相容stdlib.h)

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

函式說明

strtol()會將引數nptr字串根據引數base來轉換成長整型數。

引數base範圍從2至36,或0。

引數base代表採用的進製方式,如 base值為10則採用10進製,若base值為16則採用16進製制等。

當base值為0時則是採用10進製做轉換,但遇到如』0x』前置字元則會使用 16進製做轉換。

一開始strtol()會掃瞄引數nptr字串,跳過前面的空格字元,直到遇上數字或正負符號才開始做轉換,再遇到非數字或字串結束 時(』\0』)結束轉換,並將結果返回。

若引數endptr不為null,則會將遇到不合條件而終止的nptr中的字元指標由endptr返回。

返回值返回轉換後的長整型數,否則返回erange並將錯誤**存入errno中。

附加說明erange指定的轉換字串超出合法範圍。

#include

//cstdlib和stdlib.h都可以

#include

//cstdio和stdio.h都可以

//如果用的是cstdio和cstdlib,要加上 using namespace std;

intmain

(void

)

輸出:

lvalue  =

18

標頭檔案 c stdlib.h

c++ cstdlib(也可以使用stdlib.h,c++向下相容stdlib.h)

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

函式說明

strtoul()會將引數nptr字串根據引數base來轉換成無符號的長整型數。引數base範圍從2至36,或0。

引數base代表採用的進製方式,如base值為10則採用10進製,若base值為16則採用16進製制數等。

當base值為0時則是採用10進製做轉換,但遇到如』0x』前置字元則會使用16進製做轉換。

一開始strtoul()會掃瞄引數nptr字串,跳過前面的空格字串,直到遇上數字或正負符號才開始做轉換,再遇到非數字或 字串結束時(』\0』)結束轉換,並將結果返回。若引數endptr不為null,則會將遇到不合條件而終止的nptr中的字元指標由endptr返 回。

返回值返回轉換後的長整型數,否則返回erange並將錯誤**存入errno中。

附加說明erange指定的轉換字串超出合法範圍。

#include

//cstdlib和stdlib.h都可以

#include

//cstdio和stdio.h都可以

//如果用的是cstdio和cstdlib,要加上 using namespace std;

intmain

(void

)

輸出:

lvalue  =

18

標頭檔案 c stdlib.h

c++ cstdlib(也可以使用stdlib.h,c++向下相容stdlib.h)

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

函式說明

strtod()會掃瞄引數nptr字串,跳過前面的空格字元,直到遇上數字或正負符號才開始做轉換,到出現非數字或字串結束時(』\0』)才結束轉 換,並將結果返回。

若endptr不為null,則會將遇到不合條件而終止的nptr中的字元指標由endptr傳回。

引數nptr字串可包含正負號、 小數點或e(e)來表示指數部分。如123.456或123e-2。

返回值

返回轉換後的浮點型數。

strtod只支援轉換表示10進製數的字串

C 中string與char 轉換

string 轉換成 char string ss abcdefg char cc s.tochararray char 轉換成string string s new string cc 此外,byte 與 string 之間的裝換 byte bb encoding.utf8.getbytes ss...

C 中char 與string之間的轉換

string 轉換成 char string ss abcdefg char cc ss.tochararray char 轉換成string string s new string cc 此外,byte 與 string 之間的裝換 byte bb encoding.utf8.getbytes s...

C 中char 與string之間的轉換

string 轉換成 char string ss abcdefg char cc ss.tochararray char 轉換成string string s new string cc 此外,byte 與 string 之間的裝換 byte bb encoding.utf8.getbytes s...