C语言---printf函数使用详细说明

文章目录

  • [1. 类型符(Type Specifiers)------ 必选](#1. 类型符(Type Specifiers)—— 必选)
  • [2. 标志(Flags)------ 可选](#2. 标志(Flags)—— 可选)
  • [3. 最小宽度(Width)------ 可选](#3. 最小宽度(Width)—— 可选)
  • [4. 精度(.Precision)------ 可选](#4. 精度(.Precision)—— 可选)
  • [5. 长度修饰符(Length)------ 可选](#5. 长度修饰符(Length)—— 可选)
  • 代码示例

printf 函数的格式控制字符串是 C 语言中最强大也最复杂的工具之一。其完整语法格式为:
%[标志][最小宽度][.精度][长度修饰符]类型符

1. 类型符(Type Specifiers)------ 必选

决定了数据以何种形式呈现。

类型符 描述 示例
%d / %i 有符号十进制整数 123
%u 无符号十进制整数 123
%o 无符号八进制整数 173
%x / %X 无符号十六进制整数(小写/大写) 7b / 7B
%f 十进制浮点数(默认 6 位小数) 3.141593
%e / %E 科学计数法(小写/大写) 3.14e+00
%g / %G 自动选择 %f 或 %e 中较短的一种 -
%c 单个字符 'A'
%s 字符串 "Hello"
%p 指针地址(十六进制) 0x7ffe...
%% 输出一个百分号 % %

2. 标志(Flags)------ 可选

用于微调输出的外观。

标志 描述
- 左对齐(默认是右对齐)。
+ 显示正负号。正数前加 +,负数前加 -。
空格 正数前加空格,负数前加 -(与 + 冲突时 + 优先)。
# 特殊转换:%o 前加 0,%x 前加 0x;对于浮点数,强制显示小数点。
0 零填充:在宽度范围内用 0 代替空格填充(通常用于数字)。

3. 最小宽度(Width)------ 可选

指定输出内容占用的最小字符数。

如果实际内容长度小于宽度,则根据对齐方式填充空格或 0。

如果实际内容长度大于宽度,则按实际长度输出(不会截断)。

动态宽度:可以使用 *,由后面的参数指定。例如 printf("%*d", 5, 10); 等同于 %5d。

4. 精度(.Precision)------ 可选

以点号 . 开头,后跟数字。

对于整数:表示输出的最少数字位数。不足则补 0(如 %.3d 输出 001)。

对于浮点数:表示小数点后的位数(四舍五入)。

对于字符串:表示输出的最大字符数(超过则截断)。

动态精度:同样可以使用 *。例如 printf("%.*f", 2, 3.1415);。

5. 长度修饰符(Length)------ 可选

用于指定数据类型的具体长度(如 long 或 short)。

修饰符 描述 示例
h 短整型 (short) %hd
l 长整型 (long) 或 宽字符 %ld, %lf
ll 长度更长的整型 (long long) %lld
L 长双精度浮点型 (long double) %Lf

代码示例

bash 复制代码
#include <stdio.h>

int main() {
    int num = 42;
    double pi = 3.14159265;
    char *str = "Hello World";

    // 1. 宽度与对齐
    printf("|%10d|\n", num);    // 右对齐,宽度10
    printf("|%-10d|\n", num);   // 左对齐,宽度10
    printf("|%010d|\n", num);   // 补零,宽度10

    // 2. 精度控制
    printf("%.2f\n", pi);       // 保留2位小数: 3.14
    printf("%.5s\n", str);      // 只输出前5个字符: Hello

    // 3. 进制与符号
    printf("%+d\n", num);       // 强制显示正号: +42
    printf("%#x\n", num);       // 显示十六进制前缀: 0x2a

    // 4. 动态参数
    printf("%*.*f\n", 8, 3, pi); // 宽度8,精度3: "   3.142"

    return 0;
}
相关推荐
小糯米60116 分钟前
C++顺序表和vector
开发语言·c++·算法
froginwe1121 分钟前
JavaScript 函数调用
开发语言
独望漫天星辰26 分钟前
C++ 多态深度解析:从语法规则到底层实现(附实战验证代码)
开发语言·c++
无小道44 分钟前
Qt——事件简单介绍
开发语言·前端·qt
devmoon1 小时前
在 Paseo 测试网上获取 Coretime:On-demand 与 Bulk 的完整实操指南
开发语言·web3·区块链·测试用例·智能合约·solidity
kylezhao20191 小时前
C# 中的 SOLID 五大设计原则
开发语言·c#
凡人叶枫2 小时前
C++中输入、输出和文件操作详解(Linux实战版)| 从基础到项目落地,避坑指南
linux·服务器·c语言·开发语言·c++
春日见2 小时前
车辆动力学:前后轮车轴
java·开发语言·驱动开发·docker·计算机外设
锐意无限2 小时前
Swift 扩展归纳--- UIView
开发语言·ios·swift
低代码布道师2 小时前
Next.js 16 全栈实战(一):从零打造“教培管家”系统——环境与脚手架搭建
开发语言·javascript·ecmascript