第一次原始碼
#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...