Printf格式輸出詳解


Printf格式輸出詳解

轉換說明符

  • %a 浮點數、十六進制數
  • %c 字符
  • %d 有符號十進制整數
  • %f 浮點數(包括float和double)
  • %e 浮點數指數輸出
  • %g 浮點數不顯示無意義的零
  • %i 有符號十進制整數
  • %u 無符號十進制整數
  • %o 八進制整數
  • %x 十六進制整數
  • %p 指針
  • %s 字符串
  • %% 顯示百分號%
  • l 對整型指long型,對實型指double型 - h 用於將整型的格式字符修正為short型 ### 標志 - - 左對齊
  • + 右對齊
  • 空格 若符號為正,則顯示空格,負則顯示-
  • # 對c,s,d,u無影響;對o,在輸出時加前綴0;對x,加前綴0X;對e,g,f當結果有小數時才給出小數點

格式字符串

格式字符串:[標志][輸出最少寬度][.精度][長度]類型
  • %-md 左對齊,若m比實際少時,按實際輸出
  • %m.ns 輸出占用m位,實際輸出字符為字符串左起n位,當n>m or m省略時m=n
  • %m.nf 輸出浮點數,m為寬度,n為小數點右邊數位

代碼測試

#include<stdio.h>
int main(){
	int a = 255;
	printf("%%d:%d\n",a);
	printf("%%o:%o\n",a);
	printf("%%#o:%#o\n",a);
	printf("%%x:%x\n",a);
	printf("%%#x:%#x\n",a);
	printf("%%-2d:%-2d\n",a);
	printf("%%-4d:%-4d\n",a);
	float c = 2345.6789;
	printf("%%f:%f\n",c);
	printf("%%a:%a\n",c);
	printf("%%3.3f:%3.3f\n",c);
	printf("%%5.5f:%5.5f\n",c);
	printf("%%3.5f:%3.5f\n",c);
	printf("%%5.3f:%5.3f\n",c);
	float b = 012345.67890000;
	printf("%%f:%f\n",b);
	printf("%%e:%e\n",b);
	printf("%%g:%g\n",b);
	unsigned int d = 25536;
	printf("%%u:%u\n",d);
	char e = 'a';
	printf("%%c:%c\n",e);
	char* f = "123456789";
	printf("%%s:%s\n",f);
	printf("%%p:%p\n",f);
	char* g1 = "123";
	char* g2 = "4567";
	char* g3 = "89101";
	printf("%%+s:%4s %4s %4s\n",g1,g2,g3);
	printf("%%-s:%-4s %-4s %-4s\n",g1,g2,g3);
	char* h = "12345";
	printf("string h : %s\n",h);
	printf("%%3.3s:%3.3s\n",h);
	printf("%%5.5s:%5.5s\n",h);
	printf("%%3.5s:%3.5s\n",h);
	printf("%%5.3s:%5.3s\n",h);
	return 0;
}

代碼結果

%d:255
%o:377
%#o:0377
%x:ff
%#x:0xff
%-2d:255
%-4d:255 
%f:2345.678955
%a:0x1.2535bap+11
%3.3f:2345.679
%5.5f:2345.67896
%3.5f:2345.67896
%5.3f:2345.679
%f:12345.678711
%e:1.234568e+04
%g:12345.7
%u:25536
%c:a
%s:123456789
%p:0x400900
%+s: 123 4567 89101
%-s:123  4567 89101
string h : 12345
%3.3s:123
%5.5s:12345
%3.5s:12345
%5.3s:  123


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM