格式化輸入輸出

2022-01-16 13:40:40 字數 2222 閱讀 6534

目錄

#include int printf(const char *format, ...);

int fprintf(file *stream, const char *format, ...);

int dprintf(int fd, const char *format, ...);

int sprintf(char *str, const char *format, ...);

int snprintf(char *str, size_t size, const char *format, ...);

// 這個系列的函式可以看man的例子

#include int vprintf(const char *format, va_list ap);

int vfprintf(file *stream, const char *format, va_list ap);

int vdprintf(int fd, const char *format, va_list ap);

int vsprintf(char *str, const char *format, va_list ap);

int vsnprintf(char *str, size_t size, const char *format, va_list ap);

%[flags][fldwidth][precision][lenmodifier]convtype

-左對齊 寬度 精度 l/h/hh...等

0前導# 指定另外字首 比如十六進製制0x

[可選的] convtype 不可選的,就是最後的格式符號

預設引數是按照傳遞順序的,也可以使用%n$來挑選(計數是從1開始),但是這兩種不能混用,雖然混用也能列印.如果使用%n$的情況不指定寬度和精度,應該用通配語法*n$

如果寬度和精度需要後續手動提供,佔位符就是*,比如%*d

int a=10,d=30;

double b=20,c=30;

printf("---%*d---\n", a, d); //a 是寬度

printf("---%.*f---\n", a,b); //a 是小數字數

--- 30---

---20.0000000000---

關於佔位符的更進一步說明,where an argument is required, by writing "%m$" instead of '%' and "*m$" instead of '*',這個基本也用不到

printf("%*d", width, num);   

等同於printf("%2$*1$d", width, num);

#include int scanf(const char *format, ...);

int fscanf(file *stream, const char *format, ...);

int sscanf(const char *str, const char *format, ...);

#include int vscanf(const char *format, va_list ap);

int vsscanf(const char *str, const char *format, va_list ap);

int vfscanf(file *stream, const char *format, va_list ap);

%[*]					[fldwidth]	[m]		[lenmodifier]convtype

* 表示轉換的結果不放到引數

字元寬度

可以使用%n$指定引數位置

%掃瞄字元集合,scanf("%[abc]", buf);  //輸入abcdabcd123, buf內容為abc

[a-z] //捕獲包括字元從a到z的所有字元,直到找到乙個非a-z的字元

中如果第一字元為^符號則表示出現中的內容則停止捕獲

有一些參考

格式化輸入 輸出

scanf 函式和 printf 函式是c語言程式設計中使用最頻繁的兩個函式,他們用來格式化輸入和輸出。printf 函式 printf 格式串,表示式1,表示式2 格式串包含普通字元和轉換說明 轉換說明以 字元開頭 轉換說明可以用 m.px格式或 m.px格式 m和p都是整數常量,而x是字母。m和...

格式化輸入輸出

格式化輸入輸出 1.printf flags width prec hil type scanf flag type flag 標誌 含義 左對齊 在前面放 或 space 正數留空 0 0填充 int main width或prec 含義 number 最小字元數 下乙個引數是字元數 number...

格式化輸入輸出

printf 輸出百分號 a 浮點數 十六進製制數字和p 記數法 c99 a 浮點數 十六進製制數字和p 記法 c99 c 乙個字元char c 乙個iso寬字元 d 有符號十進位制整數int ld,ld 長整型資料long hd 短整型資料 e 浮點數 e 記數法 e 浮點數 e 記數法 f 單精...