格式控制在C语言中主要包括两部分:
1. 格式说明符(Format Specifiers)
格式说明符用于指定输入或输出数据的类型和格式。它们出现在printf和scanf函数的格式字符串中,用于控制数据的显示或读取方式。常见的格式说明符包括:
• 整数类型:
• %d 或 %i:十进制整数
• %o:八进制整数
• %x 或 %X:十六进制整数(小写和大写字母)
• 浮点类型:
• %f:十进制浮点数
• %e 或 %E:科学计数法浮点数
• %g 或 %G:自动选择 %f 或 %e 的格式,以最简形式输出
• 字符类型:
• %c:单个字符
• 字符串类型:
• %s:字符串
• 指针类型:
• %p:指针的地址
• 百分号:
• %%:输出百分号字符 (%)
2. 格式控制(Field Width, Precision, and Flags)
格式控制用于进一步细化数据的显示方式,包括字段宽度、精度和标志等。这些控制项在格式说明符中定义:
• 字段宽度:指定输出的最小宽度。若实际数据宽度小于此值,printf 将在数据前面填充空格(默认右对齐)或零(根据标志)。例如,%5d 表示至少 5 个字符宽度的整数输出。
• 精度:用于控制浮点数的小数点后位数,或者控制字符串输出的最大字符数。精度用点号 . 后跟数字指定。例如,%.2f 表示浮点数输出两位小数。
• 标志:
• -:左对齐数据(默认右对齐)。
• 0:用零填充数据(在字段宽度不足时)。
• +:在输出的数字前面显示正号(默认仅显示负号)。
• #:对于八进制和十六进制数,显示八进制和十六进制的前缀(0 和 0x)。
• (空格):在正数前面显示空格,负数前面显示负号(默认)。
例如:
printf("|%10d|\n", 123); // 输出:| 123|
printf("|%-10d|\n", 123); // 输出:|123 |
printf("|%05d|\n", 123); // 输出:|00123|
printf("|%.3f|\n", 3.1); // 输出:|3.100|
这些格式控制项使得printf和scanf函数能够精确地控制数据的输入和输出格式,以满足特定的格式要求。