首页 > 编程笔记

C语言printf():格式化输出数据

printf() 函数是 C语言标准库中的一个非常重要和常用的函数,定义在<stdio.h>头文件中。

printf() 函数用于格式化输出到标准输出设备(通常是屏幕),函数原型如下:
int printf(const char *format[,argument...]);
结合函数原型,printf() 函数的功能是在由 format 指定的格式控制下,将 argument 输出到屏幕上。

参数

1、format

由格式说明和普通字符构成。其中,普通字符是按照原样输出的字符,如逗号、空格和换行符;格式说明定义 argument 的显示格式,它以“%”开头,后面跟格式字符,格式字符前面还可以有其他修饰符,表示输出数据的宽度、精度等。

参数 format 的格式如下:
%[flags][width][.precision][length]格式字符
格式说明的个数必须与参数 argument 的个数一致。

1) 格式字符及说明如下表所示。
格式字符 说明 示例
d 或 i 带符号十进制整数 26、 285
o 无符号八进制整数 316、 501
x 无符号十六进制整数 8cf、32b7
X 无符号十六进制整数(以大写形式输出) 8CF、32B7
u 无符号十进制整数 1234、 32727
f 小数形式的单、双精度浮点数 102.6、2987.58
e 或 E 指数形式的单、双精度浮点数 1.026e+21.026E+2
g 或 G 以 %f 或 %e 的形式输出浮点数 102.6
c 单个字符 'a'、A
s 字符串 “hello”
p 输出一个指针 0012FF7C

2) flags 控制输出数据的对齐方式,flags 及说明如下表所示。

flags 说明
- 在给定的域宽内靠左端输出
+ 强制在正数前输出 + 号,在负数前输出 - 号
# 使用 o、x 或 X 格式时,在数据前面分别增加前导符 0、0x 或 0X 输出

3) width 控制数据输出的宽度,width 及说明如下表所示。

width 说明
m 输出字段的宽度,如果数据的宽度小于 m,则左端补上空格;否则按照实际位数输出

4) precision 表示单精度和双精度浮点数的小数点个数,precision 及说明如下表所示。

precisi on 说明
n 对于浮点数,表示输出 n 位小数;对于字符串,表示输出字符串的个数

5) length 表示整型数据是长整型还是短整型,length 及说明如下表所示。

length 说明
h 用来输出短整型数据(只对 i、d、0、u、x 和 X 有效)
l 或 L 用来输出长整型数据和双精度型数据

2、argument

表示要格式化输出的数据,分别与格式字符对应。

返回值

如果调用成功,则函数返回输出的字符个数;否则返回一个负数。

实例

以下是一些 C语言 printf() 函数的使用示例。
#include <stdio.h>

int main() {
  int age = 25;
  double weight = 70.5;
  char initial = 'J';

  printf("Age: %d\n", age);                       // 输出整数
  printf("Weight: %.2f kg\n", weight);            // 输出浮点数,保留两位小数
  printf("Initial: %c\n", initial);               // 输出字符
  printf("Formatted: %5d | %.3f | %-5c\n", age, weight, initial); // 使用字段宽度

  return 0;
}
输出结果为:

Age: 25
Weight: 70.50 kg
Initial: J
Formatted:    25 | 70.500 | J   

printf() 函数提供了灵活而强大的文本格式化和输出功能,是 C 语言最常用的输出工具。

推荐阅读