。。。
格式控制字符
printf中的字符包括以下三種:
(1)以%開頭的格式控制字符
(2)以 \ 開頭的轉義字符
(3)普通字符
程序1
printf的細節
// 14-1輸出語句printf細節 #include <stdio.h> int main() { long FmtLong = 99999999; //長整型 double FmtDouble = 88888888.88888888; //雙精度型 int FmtInt1 = 3, FmtInt2 = 4; //兩個普通整型 /*整數輸出*/ printf("輸出整數:"); printf("%d\n", 13); //輸出整數 printf("輸出整數:"); printf("%i\n", -13); //有符號整數 printf("輸出無符號整數:"); printf("%u\n", +13); //無符號整好 printf("輸出單個字符串:"); printf("%c\n", 'X'); //輸出單個字符 printf("輸出長整型:"); printf("%ld\n", FmtLong); //輸出長整型 printf("以16進制輸出整數,沒有正負數:"); printf("%x\n", 13); //以16進制輸出整數,沒有正負數 printf("以8進制輸出整數,沒有正負數"); printf("%o\n", 13); //以8進制輸出整數,沒有正負數 /*控制輸出*/ printf("控制寬度輸出,左端補空格:"); printf("%3d\n", 13); //控制寬度輸出 printf("控制寬度輸出:"); printf("%2d\n", 1234); printf("控制寬度輸出也適用於長整型:"); printf("%2ld\n", FmtLong); //長整型控制寬度 printf("格式串后面的字符為普通字符"); //格式串后面的字符為普通字符,普通字符原樣輸出, //如下面 "%2ld3\n" 里面的 3 會原樣輸出在最后一位,輸出的結果是:999999993 printf("%2ld3\n", FmtLong); /*浮點輸出*/ printf("\n"); //換行 printf("輸出浮點數:"); printf("%f\n", 100.33); //浮點數輸出會精確到后六位 輸出結果是:100.330000 printf("以指數形式輸出浮點數:"); printf("%e\n", 100.33); //以指數形式輸出浮點數 printf("以指數形式輸出浮點數:"); printf("%E\n", 100.33); //以指數形式輸出浮點數 printf("由系統自己決定采用e還是采用f格式輸出:"); printf("%g\n", 100.33); //系統自己決定采用e還是采用f的格式輸出 printf("輸出長浮點型:"); printf("%lf\n", FmtDouble); //輸出長浮點型 此函數有自動四舍五入的功能 printf("控制有效位數,左端補空格:"); //控制有效位數,左端補空格 //"%8.1fok\n" 8 代表總位數輸出8位。 1 代表小數點后面有一位 ok 是原樣輸出 printf("%8.1fok\n", 100.33); printf("控制有效位數,右端補空格:"); printf("%-8.1fok\n", 100.33); //控制有效位數,右端補空格 /*特殊輸出*/ printf("輸出一個換行:"); printf("\n"); //輸出一個換行 printf("輸出一個%號"); printf("%%\n"); //輸出一個%號 /*字符串輸出*/ printf("用變量方式輸出字符串:"); printf("%s\n", "你若盛開,蝴蝶自來"); //用變量的方式輸出字符串 printf("原樣輸出字符串:"); printf("不忘初心,方得始終,初心易守,始終難得\n"); //原樣輸出 printf("混合輸出:"); printf("天在高又怎樣,%s\n","踮起腳尖更接近陽光"); //混合輸出 /*綜合輸出*/ printf("同時輸出好幾個數據:"); printf("%d,%lf\n", FmtLong, FmtDouble); //同時輸出好幾個數據 printf("直接輸出結果:"); printf("%d\n", FmtInt1*FmtInt2); //直接輸出結果 printf("%d*%d=%d\n", FmtInt1, FmtInt2, FmtInt1*FmtInt2); }
※雙引號中出現一個%,后面一定要跟隨一個輸出常量,變量或表達式。
※兩個連續的%表示輸出一個%
※一旦出現格式控制字符和轉義字符,它們立即會尋找后面緊跟着的字符進行組合。但是它們前面的算普通字符。如:
printf(“a,%c\n”,t);
%c只能算一個字符,它會輸出t中的字符。\n又算一個字符,它會輸出回車。而前面的a,(逗號)只能算普通字符,會原樣輸出。
※在格式控制串中,格式說明與輸出項從左到右在類型上必須一一對應匹配。如果不匹配,數據不能正確輸出,這時系統並不報錯。如:
printf(“%d,%d”,i)
因為只有一個參數,第二個%d會輸出一個亂碼。
※%m.nf指定輸出的數據共占m列,其中有n位小數。如果數值長度小於m,則左端補空格,超過m列,原樣輸出。
※%-m.nf與%m.nf基本相同,只是使輸出的數值向左端靠,右端補空格。
※用f或lf格式打印浮點數時,系統會自動四舍五入。
※格式控制字符除了X,E,G外,其它字符必須用小寫字母,如%d不能寫成%D。
轉義字符
原本字符常量只能是一個字符,但是因為有些字符看不見或是不好表達,所以特殊的字符常量可以是多個字符,它們以 \ 開頭后面跟着其它字符,這也叫“轉義字符”。
下面是C語言中所有的轉義字符:
\n 回車換行
\t 橫向跳格(代表Tab鍵)
\v 豎向跳格(打印機專用)
\r 回車
\f 換頁(打印機專用)
\b 退格(代表Backspace鍵)
\\ 反斜杠字符 \
\’ 單引號
\” 雙引號
\ddd 以八進制形式代表的ASCII字符
\xhh 以十六進制形式代表的ASCII字符
\0 空值
下面這行代碼:
printf(“%c”,’\x41’);
會輸出字符A
注意:
※格式控制字符“%”只能在printf和scanf中使用,而轉義字符“\”可以用在所有字符和字符串處理函數中。
※轉義字符“\”會取后面所有符合條件的字符,並且只取一次,就失去作用,后面的都按普通字符輸出。如:\x41n就會輸出An
程序2
轉義字符輸出
// 14-2轉義字符輸出 #include <stdio.h> main() { printf("沒有轉義字符:"); printf("abc"); //沒有轉義字符 printf("d"); printf("\n"); printf("回車:"); printf("abc\r"); //回車 \r printf("d"); printf("\n"); printf("退格:"); printf("abc\b"); //退格 \b printf("d"); printf("\n"); printf("豎向跳格只用作在打印機上,這里是亂碼:"); printf("abc\v"); //豎向跳格只用作在打印機上,這里是亂碼\v\f printf("d"); printf("\n"); printf("引號和右斜杠只能用轉義字符輸出:"); printf("\\\n"); printf("\'\n"); printf("空字符:\n"); printf("\0\0\0"); //空字符什么也不做 printf("用ASCII碼輸出:"); printf("\101\n"); //用八進制輸出ASCII碼 printf("\x42\n"); //用十六進制輸出ASCII碼 printf("制表符演示:\n"); printf("%d\t%d\t%d\t\n", 1, 2, 3); printf("%d\t%d\t%d\t\n", 100, 200, 300); printf("%d\t%d\t%d\t\n", 999, 10000, 4444); printf("-------------------------\n"); printf("|%d\t|%d\t|%d\t|\n", 1, 2, 3); printf("|%d\t|%d\t|%d\t|\n", 100, 200, 300); printf("|%d\t|%d\t|%d\t|\n", 999, 10000, 4444); printf("-------------------------\n"); }