extern int printf(const char *format,...);
在c語言中產生格式化輸出的函式(定義在 stdio.h 中),其向未重定向終端(顯示器、控制台等)輸出字元。
format 引數是包含三種物件型別的乙個字串:
* 無格式字元複製到輸出流
* 轉換規範,每個規範導致在值引數列表中檢索 1 個或更多個項
* 轉義序列
通常意義上format的格式如下:
%[flags][width][.prec][f|n|h|l]type
type的字元用於規定輸出資料的型別,含義如下:
字元對應資料型別含義d
int接受整數值並將它表示為有符號的十進位制整數
ounsigned int
無符號8進製整數(不輸出字首0)
u
unsigned int
無符號10進製整數
x / x
unsigned int
無符號16進製制整數,x對應的是abcdef,x對應的是abcdef(不輸出字首0x)
f(lf)
float(double)
單精度用f,雙精度用lf(尤其scanf不能混用)
e / e
double
科學計數法表示的數,此處"e"的大小寫代表在輸出時用的「e」的大小寫
g / g
double
有效位數,如:%8g表示單精度浮點數保留8位有效數字。雙精度用lg
c
char
字元型。可以把輸入的數字按照ascⅱ碼相應轉換為對應的字元
s / s
char * / wchar_t *
字串。輸出字串中的字元直至字串中的空字元(字串以'\0『結尾,這個'\0'即空字元)
p
void *
以16進製制形式輸出指標
nint *
到此字元之前為止,一共輸出的字元個數,不輸出文字
%
無輸入不進行轉換,輸出字元『%』(百分號)本身
m無列印errno值對應的出錯內容,(例: printf("%m\n"); )
注:%g、%g在小數點位數四位或指數大於等於精度時用%e、%e,否則用%f。
flags 規定輸出樣式,取值和含義如下:
字元
字元名稱說明-
減號左對齊,右邊填充空格(預設右對齊)
+
加號在數字前增加符號 + 或 -
0
數字零將輸出的前面補上0,直到佔滿指定列寬為止(不可以搭配使用「-」)
空格輸出值為正時加上空格,為負時加上負號
#
井號type是o、x、x時,增加字首0、0x、0x
type是e、e、f、g、g時,一定使用小數點
type是g、g時,尾部的0保留
用於控制顯示數值的寬度,取值和含義如下:
n(n=1,2,3,4,5,6...): 寬度至少為n位,不夠以空格填充。
* 格式列表中,下乙個引數還是width
width是乙個可選的指定最小值字段寬度的十進位制數字字串。如果轉換值字元少於字段寬度,該字段將從左到右按指定的字段寬度填充。如果指定了左邊調整選項,欄位將在右邊填充。如果轉換結果寬於字段寬度,將擴充套件該字段以包含轉換後的結果。不會發生截斷。然而,小的精度可能導致在右邊發生截斷。
用於控制小數點後面的位數,取值和含義如下:
無按預設精度顯示0
當type=d,i,o,u,x時,沒有影響;
type=e,e,f時,不顯示小數點
n(n=1,2,3...)
當type=e,e,f時表示的最大小數字數;
type=其他,表示顯示的最大寬度
prec是指可選的精度。精度是乙個 .(點)後跟十進位制數字字串。如果沒有給出精度,按 0(零)對待。精度指定:
* d、o、i、 u、x 或 x 轉換的最少數字顯示位數。
* e 和 f 轉換的基數字元後的最少數字顯示位數。
* g 轉換的最大有效數字位數。
* s 轉換中字串的最大列印位元組數目。
表示指標是否是遠指標或整數是否是長整數
f 遠指標
n 近指標
h 短整數(short int)
l 長整數(long int) (此處如果與d搭配為%lld則為long long int(c99),與f搭配為%llf則為long double(c99))
[argument]
包含需要輸出的資料,可以是常量(字元常量、數字常量、字串常量),變數,以及表示式。此處的資料應當與前面的format中的格式控制符一一對應(如果不對應會產生錯誤)。
int scanf(const char * restrict format,...);
函式 scanf() 是從標準輸入流stdio (標準輸入裝置,一般指向鍵盤)中讀內容的通用子程式,可以說明的格式讀入多個字元,並儲存在對應位址的變數中。
表示讀入的資料將被捨棄。帶有*的格式指令不對應可變引數列表中的任何資料。
以乙個非零的十進位制整數形式出現。表示該格式指令最多讀入的字元數。
c 讀入域寬指定的數目個字元組成的字串行(後面不會加上空位元組),如果省略寬度則讀入單字元。如%c或%1c讀入單字元,%2c讀入兩個字元(後面不會加上空位元組),以此類推。
s讀入乙個以空白字元結束的字串行,後面會加上空位元組。
d 讀入可選有符號(可選有符號表示輸入時可以帶符號也可以不帶符號,不帶符號則視為非負)十進位制整數。輸入格式應該像strtol函式的base實參為10呼叫時識別的字串行一樣。
i 讀入可選有符號整數。輸入格式應該像strtol函式的base實參為0呼叫時識別的字串行一樣。
a,e,f,g,a,e,f,g 讀入可選有符號浮點數,輸入格式應該像strtod函式識別的字串行一樣。
o 讀入可選有符號八進位制整數。輸入格式應該像strtoul函式的base實參為8呼叫時識別的字串行一樣。
x,x讀入可選有符號十六進製制整數。輸入格式應該像strtoul函式的base實參為16呼叫時識別的字串行一樣。
p 讀入乙個指標值。讀入的字串行應該與fprintf的%p產生的字串行形式相同。
n 不讀入任何字元,而是把到該位置已讀入的字元數儲存到與之對應的int*指向的位置。本轉換說明符如果帶有*或者帶有域寬資訊(如:%*n或%3n等),則後果是未定義的。
u 讀入可選有符號八進位制整數。輸入格式應該像strtoul函式的base實參為10呼叫時識別的字串行一樣。
[ 掃瞄字元集合
% 讀入% 符號(百分號)
無效的轉換說明符將引起未定義的行為。
hh與d, i, o, u, x, x, or n配合使用,表示對應乙個signed char或unsigned char資料。
h與d, i, o, u, x, x, or n配合使用,表示對應乙個short int或unsigned short int資料。
l 與d, i, o, u, x, x, or n配合使用,表示對應乙個long int或unsigned long int資料;與a, a, e, e, f, f, g, or g配合使用表示對應乙個double資料;與c,s,[配合使用表示對應wchar_t資料。
ll與d, i, o, u, x, x, or n配合使用,表示對應乙個long long int或unsigned long long int資料。
j與d, i, o, u, x, x, or n配合使用,表示對應乙個intmax_t或uintmax_t資料。
z與d, i, o, u, x, x, or n配合使用,表示對應乙個size_t資料(或與size_t對應的有符號整型資料)。
t與d, i, o, u, x, x, or n配合使用,表示對應乙個ptrdiff_t資料(或與ptrdiff_t對應的無符號整型資料)。
l 與a, a, e, e, f, f, g, or g配合使用,表示對應乙個long double資料。
如果長度修飾符與格式說明符不匹配則引起未定義的行為。
空白字元會使scanf函式在讀操作中略去輸入中的乙個或多個空白字元。
C語言中printf的語法
c中格式字串的一般形式為 標誌 輸出最小寬度 精度 長度 型別,其中方括號中的項為可選項。各項的意義介紹如下 1.型別型別字元用以表示輸出資料的型別,其格式符和意義下表所示 表示輸出型別的格式字元 格式字元意義 a 浮點數 十六進製制數字和p 計數法 c99 a 浮點數 十六進製制數字和p 計數法 ...
Go語言中Printf 的用法
printf 在使用時需要給它指定乙個格式化規則,下面就詳細列舉一下他的用法 package main import fmt import os type point struct func main fmt.printf v n p 如果值是乙個結構體,v 的格式化輸出內容將包括結構體的欄位名。f...
C語言中的printf函式
c語言中的 g是printf 函式的乙個輸出格式化型別,它表示以 f e中較短的輸出寬度 輸出單雙精度實數,在指數小於 4或者大於等於精度時使用 e格式 02g 02表示不足兩位,前面補0輸出 超過兩位的不影響 root localhost seq printf 02x n 0x123 123 ro...