一、格式化输出
1. 打印整数
转换说明符 说明 d 按有符号十进制整数显示 i 按有符号十进制数显示(在scanf函数中,说明符i与d的含义不同) o 按无符号的八进制整数显示 u 按无符号的十进制整数显示 x或X 按无符号的十六进制显示(x将显示0~9和a~f,而X将显示0~9和A~F) h或l 写在任意一个整数转换说明符前面,分别表示将要显示的是一个短整数或长整数
#include <stdio.h>
int main()
{
printf ("%d\n" , 455 );
printf ("%i\n" , 455 );
printf ("%d\n" , +455 );
printf ("%d\n" , -455 );
printf ("%hd\n" , 32000 );
printf ("%ld\n" , 2000000000L );
printf ("%o\n" , 455 );
printf ("%u\n" , 455 );
printf ("%u\n" , -455 );
printf ("%x\n" , 455 );
printf ("%X\n" , 455 );
return 0 ;
}
结果 455 455 455 -455 32000 2000000000 707 455 4294966841 1c7 1C7
2. 打印浮点数
转换说明符 说明 e或E 以指数形式显示一个浮点数 f 以小数点固定的形式显示一个浮点数 g或G 根据绝对值大小,采用f浮点形式或e(E)指数形式显示一个不带末尾0的浮点数。若浮点数转换成指数形式后,一个浮点数的幂值小于-4或者大于等于指定的精度(默认情况下,g或G格式输出6位有效数字),则采用转换说明符e(E)来打印这个浮点数,否者采用转换说明符f来打印这个浮点数 L 放在任意一种浮点数转换说明符前面,表示打印的是一个长双精度(long double)的浮点数
默认情况下,用转换说明符e、E、f显示的浮点数在小数点后面有6位的精度
#include <stdio.h>
int main()
{
printf ("%e\n" , 1234567.89 );
printf ("%e\n" , +1234567.89 );
printf ("%e\n" , -1234567.89 );
printf ("%E\n" , 1234567.89 );
printf ("%f\n" , 1234567.89 );
printf ("%g\n" , 1234567.89 );
printf ("%G\n" , 1234567.89 );
return 0 ;
}
结果 1.234568e+006 1.234568e+006 -1.234568e+006 1.234568E+006 1234567.890000 1.23457e+006 1.23457E+006
3. 打印字符或字符串
c表示打印一个字符,s表示打印一个字符串
#include <stdio.h>
int main()
{
char character = 'A' ;
char string [] = "This is a string" ;
const char *stringPtr = "This is also a string" ;
printf ("%c\n" , character);
printf ("%s\n" , "This is a string" );
printf ("%s\n" , string );
printf ("%s\n" , stringPtr);
return 0 ;
}
结果 This is a string This is a string This is also a string
4. 其他转换说明符
转换说明符 说明 p 用系统实现时所定义的方式显示一个指针 n 保存当前printf语句中已经输出的字符的总数。需要提供一个指向整形变量的指针作为相应的实参。什么也不显示 % 显示一个百分号
5. 标记
标记 说明 - 在域宽内左对齐显示输出结果 + 在整数前显示+,在负数前显示- 空格 在没有打印加号的正数前打印一个空格 # 当使用八进制转换说明符o时,在输出数据前加上前缀o。当使用十六进制说明符x或X时,在输出数据前加上前缀0x或0X。当使用说明符e、E、g或G打印的浮点数没有小数部分时,强制显示一个小数点。对于g或G转换说明符,末尾的0不会被删除 0(零) 在打印数据前面加上前导0以填满域宽
int main()
{
printf ("%d \n%d \n" , 786 , -786 );
printf ("%+ d\n%+ d\n" , 786 , -786 );
printf ("% d\n% d\n" , 786 , -786 );
int c = 1427 ;
double p = 1427.0 ;
printf ("%#o \n" , c);
printf ("%#x \n" , c);
printf ("%#X \n" , c);
printf ("\n%g \n" , p);
printf ("\n%#g \n" , p);
printf ("%+ 09d\n" , 452 );
printf ("%09d \n" , 452 );
return 0 ;
}
结果 786 -786 +786 -786 (空格)786 -786 02623 0x593 0X593 1427 1427.00 +00000452 000000452
二、格式化输出
转换说明符 说明 d 读入一个任意符号的十进制整数。相应的实参是一个指向整型变量的指针 i 读入一个任意符号的十进制、八进制或十六进制的整数,相应的实参是一个指向整型变量的指针 o 读入一个八进制整数。相应的实参是一个指向无符号整型变量的指针 u 读入一个十进制整数。相应的实参是一个指向无符号整型变量的指针 x或X 读入一个十六进制的整数。相应的实参是一个指向无符号整型变量的指针 h或l 写在任意整型转换说明符前面,表示将要输入的是一个短整型数据或长整型数据 e、E、g或G 读入一个浮点数。相应的实参是一个指向浮点类型变量的指针 l或L 写在任意一个浮点型转换说明符前面,表示将要输入的是一个双精度或长双精度浮点数 c 读入一个字符。相应的实参是一个指向字符型变量的指针。不会加上字符串结束符(’\0’) s 读入一个字符串。相应的实参是一个指向字符型数组的指针。数组大小必须足以容纳输入的字符串以及系统自动加上的字符串结束符 [扫描字符] 扫描一个字符串以查找事先存储在一个数组中的一组目标字符 p 按照printf语句用%p输出的地址格式相同的格式读入一个地址 n 保存到目前为止本次scanf函数调用以输入的字符总数。相应的实参是一个指向整型变量的指针 % 在输入中忽略一个百分号
转载请说明出处