C語言stdio頭文件(stdio.h)中printf函數的用法及代碼示例。
用法:
int printf ( const char * format, ... );
將格式化的數據打印到標準輸出
參數
- format
- 包含要寫入的文本的C字符串stdout。
它可以選擇包含嵌入式格式說明符這些值將替換為後續附加參數中指定的值,並按要求設置格式。
A 格式說明符遵循此原型:[請參閱下麵的兼容性說明]
%[flags][width][.precision][length]specifier
哪裏指定符最後是最重要的組成部分,因為它定義了類型及其相應參數的解釋:
說明符 輸出 示例 d 或者 i 有符號十進製整數 392 u 無符號十進製整數 7235 o 無符號八進製 610 x 無符號十六進製整數 7fa X 無符號十六進製整數(大寫) 7FA f 十進製浮點,小寫 392.65 F 十進製浮點,大寫 392.65 e 科學計數法(尾數/ index ),小寫 3.9265e+2 E 科學計數法(尾數/ index ),大寫 3.9265E+2 g 使用最短的表示形式:%e或者%f 392.65 G 使用最短的表示形式:%E或者%F 392.65 a 十六進製浮點,小寫 -0xc.90fep-2 A 十六進製浮點,大寫 -0XC.90FEP-2 c Character a s 字串 sample p 指針地址 b8000000 n 什麽都沒打印。
相應的參數必須是指向signed int。
到目前為止寫入的字符數存儲在指定的位置。% A %其次是%角色會寫一個%到流。 %
這個格式說明符還可以包含sub-specifiers:標誌,寬度,。精確和修飾符(按此順序),它們是可選的,並遵循以下規範:
標誌 描述 - 在給定的字段寬度內為Left-justify;右對齊是默認設置(請參見寬度sub-specifier)。 + 強製在結果前加上加號或減號(+或者-),即使是正數也是如此。默認情況下,隻有負數前麵帶有一個-標誌。 (空間) 如果不寫任何符號,則在該值之前插入一個空格。 # 用於o,x或者X指定值的開頭0,0x或者0X分別針對不等於零的值。
用於a,A,e,E,f,F,g或者G即使沒有更多的數字,它也會強製寫入的輸出包含小數點。默認情況下,如果沒有數字跟隨,則不寫小數點。0 Left-pads帶有零的數字(0),而不是指定填充時的空格(請參見寬度sub-specifier)。
寬度 描述 (數字) 最少要打印的字符數。如果要打印的值小於此數字,則結果將用空格填充。即使結果較大,該值也不會被截斷。 * 寬度不是在格式字符串中指定的,而是作為必須格式化的參數之前的附加整數值參數。
。精確 描述 .數字 對於整數說明符(d,i,o,u,x,X):precision指定要寫入的最小位數。如果要寫入的值短於該數字,則結果將以前導零填充。即使結果更長,該值也不會被截斷。的精度0表示沒有字符被寫為值0。
為了a,A,e,E,f和F說明符:這是要打印的位數後小數點(默認為6)。
為了g和G說明符:這是要打印的最大有效位數。
為了s:這是要打印的最大字符數。默認情況下,將打印所有字符,直到遇到結尾的空字符為止。
如果指定的期間沒有明確的值精確,0假設。
.* 精度不是在格式字符串中指定的,而是作為必須格式化的參數之前的附加整數值參數。
這個長度sub-specifier修改數據類型的長度。這是一個圖表,顯示了用於解釋帶有或不帶有相應參數的類型長度說明符(如果使用其他類型,則在允許的情況下執行正確的類型提升或轉換):
說明符 長度 d i u o x X f F e E g G a A c s p n (沒有) int unsigned int double int char* void* int* hh signed char unsigned char signed char* h short int unsigned short int short int* l long int unsigned long int wint_t wchar_t* long int* ll long long int unsigned long long int long long int* j intmax_t uintmax_t intmax_t* z size_t size_t size_t* t ptrdiff_t ptrdiff_t ptrdiff_t* L long double c
說明符:需要一個int(或者wint_t)作為參數,但會正確轉換為char值(或wchar_t),然後對其進行格式化以進行輸出。
注意:黃色行表示指定符和C99引入的sub-specifiers。看<cinttypes>用於擴展類型的說明符。
- ... (additional arguments)
- 取決於格式字符串,函數可能需要一係列附加參數,每個參數都包含一個用於替換a的值格式說明符在裏麵格式字符串(或指向存儲位置的指針,用於n)。
這些參數至少應與格式說明符。該函數將忽略其他參數。
返回值
成功後,將返回寫入的字符總數。如果發生寫入錯誤,則錯誤指示(ferror)設置,並返回負數。
如果在寫入寬字符時發生多字節字符編碼錯誤,errno被設定為EILSEQ並返回負數。
示例
/* printf example */
#include <stdio.h>
int main()
{
printf ("Characters: %c %c \n", 'a', 65);
printf ("Decimals: %d %ld\n", 1977, 650000L);
printf ("Preceding with blanks: %10d \n", 1977);
printf ("Preceding with zeros: %010d \n", 1977);
printf ("Some different radices: %d %x %o %#x %#o \n", 100, 100, 100, 100, 100);
printf ("floats: %4.2f %+.0e %E \n", 3.1416, 3.1416, 3.1416);
printf ("Width trick: %*d \n", 5, 10);
printf ("%s \n", "A string");
return 0;
}
輸出:
Characters: a A Decimals: 1977 650000 Preceding with blanks: 1977 Preceding with zeros: 0000001977 Some different radices: 100 64 144 0x64 0144 floats: 3.14 +3e+000 3.141600E+000 Width trick: 10 A string |
相關用法
- C語言 remove用法及代碼示例
- C語言 rename用法及代碼示例
- C語言 tmpfile用法及代碼示例
- C語言 tmpnam用法及代碼示例
- C語言 fclose用法及代碼示例
- C語言 fflush用法及代碼示例
- C語言 fopen用法及代碼示例
- C語言 freopen用法及代碼示例
- C語言 setbuf用法及代碼示例
- C語言 setvbuf用法及代碼示例
- C語言 fprintf用法及代碼示例
- C語言 fscanf用法及代碼示例
- C語言 scanf用法及代碼示例
- C語言 snprintf用法及代碼示例
- C語言 sprintf用法及代碼示例
- C語言 sscanf用法及代碼示例
- C語言 vfprintf用法及代碼示例
- C語言 vfscanf用法及代碼示例
- C語言 vprintf用法及代碼示例
- C語言 vscanf用法及代碼示例
- C語言 vsnprintf用法及代碼示例
- C語言 vsprintf用法及代碼示例
- C語言 vsscanf用法及代碼示例
- C語言 fgetc用法及代碼示例
- C語言 fgets用法及代碼示例
- C語言 fputc用法及代碼示例
- C語言 fputs用法及代碼示例
- C語言 getc用法及代碼示例
- C語言 getchar用法及代碼示例
- C語言 gets用法及代碼示例
- C語言 putc用法及代碼示例
- C語言 putchar用法及代碼示例
- C語言 puts用法及代碼示例
- C語言 ungetc用法及代碼示例
- C語言 fread用法及代碼示例
- C語言 fwrite用法及代碼示例
- C語言 fgetpos用法及代碼示例
- C語言 fseek用法及代碼示例
- C語言 fsetpos用法及代碼示例
- C語言 ftell用法及代碼示例
- C語言 rewind用法及代碼示例
- C語言 clearerr用法及代碼示例
- C語言 feof用法及代碼示例
- C語言 ferror用法及代碼示例
- C語言 perror用法及代碼示例
注:本文由純淨天空篩選整理自C標準庫大神的英文原創作品 C printf function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。