跳轉到內容

C++ 程式設計/程式碼/標準 C 庫/函式/printf

來自華夏公益教科書,開放的書籍,開放的世界
語法
#include <cstdio>
int printf( const char *format, ... );
cout<<printf;

printf() 函式根據傳遞給 printf() 的格式和其他引數將輸出列印到 **stdout**。格式字串包含兩種型別的專案 - 將列印到螢幕上的字元以及定義如何顯示 printf() 的其他引數的格式命令。基本上,您指定一個格式字串,其中包含文字以及對映到 printf() 的其他引數的“特殊”字元。例如,此程式碼

char name[20] = "Bob";
int age = 21;
printf( "Hello %s, you are %d years old\n", name, age );

顯示以下輸出

 Hello Bob, you are 21 years old

%s 表示“將第一個引數(字串)插入此處”。%d 表示第二個引數(整數)應放置在該位置。對於不同的變數型別有不同的 %- 程式碼,以及用於限制變數長度等的選項。

控制字元 解釋
%c 單個字元
%d 十進位制整數
%i 整數
%e 科學記數法,使用小寫 "e"
%E 科學記數法,使用大寫 "E"
%f 浮點數
%g 使用 %e 或 %f,哪個更短
%G 使用 %E 或 %f,哪個更短
%o 八進位制數
%x unsigned 十六進位制,使用小寫字母
%X unsigned 十六進位制,使用大寫字母
%u 一個 unsigned 整數
%s 字串
%ls 寬字串
%x 十六進位制數
%p 指標
%n 引數應是指向整數的指標,其中將放置到目前為止寫入的字元數
%% 百分號

可以在最終控制字元之前出現一個欄位長度說明符以指示欄位的寬度

  • h,當插入 %d 內部時,會導致引數為 short int。
  • l,當插入 %d 內部時,會導致引數為 long。
  • l,當插入 %f 內部時,會導致引數為 double。
  • L,當插入 %d 或 %f 內部時,會導致引數分別為 long long 或 long double。

放在 % 符號和格式命令之間的整數充當最小欄位寬度說明符,並使用空格或零填充輸出,使其足夠長。如果您想用零填充,請在最小欄位寬度說明符之前放置零

  %012d

您還可以包含一個精度修飾符,形式為 .N,其中 N 是某個數字,在格式命令之前

 %012.4d

精度修飾符的含義根據使用的格式命令而有所不同

  • 對於 %e、%E 和 %f,精度修飾符允許您指定所需的十進位制位數。例如,%12.6f 將顯示至少 12 位寬的浮點數,並帶六位小數。
  • 對於 %g 和 %G,精度修飾符確定顯示的有效數字的最大數量。
  • 對於 %s,精度修飾符只是充當最大欄位長度,以補充在句點之前的最小欄位長度。

所有 printf() 的輸出都是右對齊的,除非您在 % 符號後立即放置減號。例如,

 %-12.4f

將顯示最小為 12 個字元、4 位小數且左對齊的浮點數。您可以使用字母 l 和字母 h 修改 %d、%i、%o、%u 和 %x 型別說明符,以指定長資料型別和短資料型別(例如,%hd 表示短整數)。%e、%f 和 %g 型別說明符可以在它們之前帶有字母 l,以指示其後跟著 double。%g、%f 和 %e 型別說明符可以用字元 '#' 作為字首,以確保即使沒有小數位也會出現小數點。在 %x 型別說明符中使用 '#' 字元表示十六進位制數應以 '0x' 字首列印。在 %o 型別說明符中使用 '#' 字元表示八進位制值應以 0 字首顯示。

在型別說明符中插入加號 '+' 將強制正值以 '+' 符號作為字首。在其中放置空格字元 ' ' 將強制正值以單個空格字元作為字首。

您還可以包含常量轉義序列在輸出字串中。

printf() 的返回值是列印的字元數,如果發生錯誤則為負數。

相關主題
fprintf - puts - scanf - sprintf
華夏公益教科書