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;
}
相关推荐
祈安_1 天前
C语言内存函数
c语言·后端
郑州光合科技余经理3 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
feifeigo1233 天前
matlab画图工具
开发语言·matlab
dustcell.3 天前
haproxy七层代理
java·开发语言·前端
norlan_jame3 天前
C-PHY与D-PHY差异
c语言·开发语言
多恩Stone3 天前
【C++入门扫盲1】C++ 与 Python:类型、编译器/解释器与 CPU 的关系
开发语言·c++·人工智能·python·算法·3d·aigc
QQ4022054963 天前
Python+django+vue3预制菜半成品配菜平台
开发语言·python·django
czy87874753 天前
除了结构体之外,C语言中还有哪些其他方式可以模拟C++的面向对象编程特性
c语言
遥遥江上月3 天前
Node.js + Stagehand + Python 部署
开发语言·python·node.js
m0_531237173 天前
C语言-数组练习进阶
c语言·开发语言·算法