天天看點

printf(),sprintf(),vsprintf() 詳解

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 ;

}