printf()
在控制台應用程式中最為常用,使用也很簡單。
函數原型:printf(constchar *format,[argument]);
第一個參數是一個格式字串,後面是與格式字串中的代碼相對應的不同類型多個參數。
例如:
int a=1;
char *pchStr = "test printf!";
printf("%d:%s\n",a,pchStr);
輸出:
1:testprintf!
sprintf()
用于将輸出存到字元緩沖中。
函數原型:sprintf(char*buffer, const char *format, [argument]);
第一個參數是字元緩沖區;後面是一個格式字串。sprintf不是将格式化結果标準輸出,而是将其存入buffer。該函式傳回該字串的長度。
例如:
int a=1;
char b='s';
char achBuffer[10] = {0};
sprintf(achBuffer,"%d+%c",a,b);
輸出:
1+s
vsprintf()
與sprintf()功能類似,可以用 vsprintf()來實作 sprintf()。。
需要引入相關頭檔案 #include<stdarg.h>
函數原型:vsprintf(char *buffer, char *format, va_list param);
vsprintf是sprintf的一個變形,它隻有三個參數。vsprintf用於執行有多個參數的自訂函式,類似printf格式。vsprintf的前兩個參數與sprintf相同:一個用於儲存結果的字元緩沖區和一個格式字串。第三個參數是指向格式化參數陣列的名額。實際上,該名額指向在堆疊中供函式呼叫的變數。va_list、va_start和va_end巨集(在STDARG.H中定義)幫助我們處理堆疊名額。
使用vsprintf函式,sprintf函式可以這樣編寫:
intsprintf (char * szBuffer, const char * szFormat, ...)
{
int iReturn ;
va_listpArgs ;
va_start(pArgs, szFormat) ;
iReturn= vsprintf (szBuffer, szFormat, pArgs) ;
va_end(pArgs) ;
returniReturn ;
}