sprintf 和itoa 的區別

2021-07-30 18:31:17 字數 2954 閱讀 3863

第一次原始碼

#include

#include

#include

#define n 100

int main();

scanf("%s",numstr);

for(i = 0; i < strlen(numstr); i++)

char sumstr[3];

itoa(sum,sumstr,16);

for(i = 0; i < strlen(sumstr)-1; i++)

printf("%s",numpy[sumstr[i] - 48]);

}

error: can not renice

a.c: in function 'main':

a.c:16:2: warning: implicit declaration of function 'itoa' [-wimplicit-function-declaration]

itoa(sum,sumstr,16);

^/tmp/ccmsn3gd.o: in function `main':

a.c:(.text.startup+0x100): undefined reference to `itoa'

collect2: error: ld returned 1 exit status

編譯日誌給出提示主要有兩條:

itoa是廣泛應用的非標準c語言和c++語言擴充套件函式,但它不是標準c/c++語言函式,所以不能在所有的編譯器中使用。不過大多數的編譯器(如windows上的)通常在標頭檔案/標頭檔案中包含這個函式。

itoa()的功能是將任意型別的數字轉換為字串。在中與之有相反功能的函式是atoi()。用法如下:

char* itoa(int

value, char* string, int radix)

intvalue 被轉換的整數,char *string 轉換後儲存的字元陣列,int radix 轉換進製數,如2,8,10,16 進製等

itoa()的c語言實現如下:

char* itoa(intnum,char*str,intradix)else unum=(unsigned)num;/*其他情況*/

/*轉換*/

dowhile(unum);

str[i]='\0';

/*逆序*/

if(str[0]=='-')k=1;/*十進位制負數*/

else k=0;

char temp;

for(j=k;j<=(i-1)/2;j++)

return

str;

}

itoa()不是c標準庫中的函式,而是windows平台下擴充套件的,標準庫中有sprintf,功能比這個更強,用法跟printf類似,因此建議大家更多的使用sprintf()。

sprintf()是字串格式化命令,主要功能是把格式化的資料寫入某個字串中。它是個變參函式,是c標準庫中的函式,包含在中。

原型

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

引數列表

buffer:char型指標,指向將要寫入的字串的緩衝區。

format:格式化字串。

[argument]…:可選引數,可以是任何型別的資料。

返回值

返回寫入buffer 的字元數,出錯則返回-1. 如果 buffer 或 format 是空指標,且不出錯而繼續,函式將返回-1,並且 errno 會被設定為 einval。

sprintf 返回被寫入buffer 的位元組數,結束字元『\0』不計入內。即,如果「hello」被寫入空間足夠大的buffer後,函式sprintf 返回5。

注意:使用sprintf 對於寫入buffer的字元數是沒有限制的,這就存在了可能buffer溢位。解決這個問題,可以考慮使用 snprintf函式,該函式可對寫入字元數做出限制。

示例原始碼

// 程式使用sprintf 將各種資料格式化後置於字元陣列buffer中

#include

int main( void )

執行結果

格式

sprintf格式的規格如下所示,中的部分是可選的。

%[指定引數][識別符號][寬度][.精度]指示符

若想輸出』%』本身時, 請使用』%%』處理。

1. 處理字元方向。負號時表示從後向前處理。

2. 填空字元。 0 的話表示空格填 0;空格是內定值,表示空格就放著。

3. 字元總寬度。為最小寬度。

4. 精確度。指在小數點後的浮點數字數。

轉換字元

%% 印出百分比符號,不轉換。

%c 整數轉成對應的 ascii 字元。

%d 整數轉成十進位。

%f 倍精確度數字轉成浮點數。

%o 整數轉成八進位。

%s 整數轉成字串。

%x 整數轉成小寫十六進製。

%x 整數轉成大寫十六進製。

itoa 函式和sprintf 函式

itoa 為c語言的乙個函式。itoa 函式是乙個廣泛應用的,從非標準擴充套件到標準的c語言。它不能被移植,因為它不是標準定義下的c語言,但是,編譯器通常在乙個不遵循程式標準的模式下允許其通過header 因為它是乙個從邏輯對應到標準庫的函式。itoa 取整數輸入值,並將其轉換為相應進製數字的字串。...

strfttime和sprintf 的區別和用法

sprintf 格式化輸出函式 圖形 功能 函式sprintf 用來作格式化的輸出。用法 此函式呼叫方式為int sprintf char string,char format,arg list 說 明 函式sprintf 的用法和printf 函式一樣,只是sprintf 函式給出第乙個引數str...

C wsprintf和sprintf 的區別

getdlgitemtext hwnd,idc edit1,number,sizeof number double radius atof number tchar area 256 double result radius radius 3.1415926 sprintf area,lf resu...