。。。
格式控制字符
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"); }