ZetCode

C printf 函数

最后修改日期:2025 年 4 月 6 日

在 C 编程中,格式化输出对于清晰地显示数据至关重要。printf 函数是向控制台打印的标准工具。它支持各种格式说明符来控制输出外观。本教程涵盖 printf 的基础知识、格式说明符和实际示例。掌握 printf 可以确保程序输出专业且易于阅读。

什么是 printf?

C 语言中的 printf 函数将格式化输出打印到 stdout。它接受一个格式字符串和可选参数。格式字符串包含文本和格式说明符,用于定义如何显示参数。始终包含 stdio.h 才能使用 printf。为了安全起见,请避免使用用户提供的格式字符串,以防止格式字符串攻击等漏洞。

Basic printf Usage

此示例演示了 printf 显示文本的最简单用法。

basic_printf.c
#include <stdio.h>

int main() {
    printf("Hello, World!\n");  // Print a simple message
    return 0;
}

在此,printf 输出字符串“Hello, World!”,后跟一个换行符。\n 转义序列将光标移到下一行。这个基本示例展示了如何在不使用变量的情况下打印静态文本。printf 要正常工作需要 stdio.h 头文件。

使用 printf 打印变量

了解如何使用 printf 的格式说明符显示变量值。

variable_printf.c
#include <stdio.h>

int main() {
    int age = 25;
    float height = 1.75f;
    char grade = 'A';

    printf("Age: %d\n", age);          // Integer
    printf("Height: %.2f\n", height);  // Float with 2 decimals
    printf("Grade: %c\n", grade);      // Character

    return 0;
}

此示例使用格式说明符:%d 用于整数,%.2f 用于具有 2 位小数的浮点数,%c 用于字符。每个说明符都匹配相应的变量类型。printf 函数按顺序用变量值替换说明符。格式说明符可确保在输出中正确表示数据。

使用 printf 格式化数字

使用宽度、精度和对齐说明符控制数字格式。

number_formatting.c
#include <stdio.h>

int main() {
    int num = 42;
    float pi = 3.14159f;

    printf("Default: %d\n", num);
    printf("Width 5: %5d\n", num);      // Right-aligned in 5 spaces
    printf("Left: %-5dEND\n", num);     // Left-aligned
    printf("Precision: %.3f\n", pi);    // 3 decimal places
    printf("Combined: %8.2f\n", pi);    // 8 width, 2 decimals

    return 0;
}

数字格式控制包括宽度(%5d)、左对齐(%-5d)和精度(%.3f)。宽度用空格填充数字,以达到指定的长度。精度控制浮点数的小数位数。组合格式(%8.2f)同时设置宽度和精度。这些选项可创建整齐对齐的数字输出。

打印多个值

在一个 printf 语句中高效地显示多个变量。

multiple_values.c
#include <stdio.h>

int main() {
    char name[] = "Alice";
    int score = 95;
    float average = 92.5f;

    printf("%s scored %d/100 (Avg: %.1f%%)\n", 
           name, score, average);

    return 0;
}

此示例在一个 printf 调用中组合了字符串(%s)、整数(%d)和浮点数(%.1f)说明符。%% 用于打印字面上的百分号。参数按顺序与说明符匹配。可以使用单个格式化字符串高效地构建复杂输出。始终将说明符类型与变量类型匹配。

printf 高级格式化

探索十六进制和科学计数法等高级格式化选项。

advanced_formatting.c
#include <stdio.h>

int main() {
    int value = 255;
    double large = 1234567.89;

    printf("Hex: %x\n", value);         // Lowercase hexadecimal
    printf("HEX: %X\n", value);        // Uppercase hexadecimal
    printf("Scientific: %e\n", large);  // Scientific notation
    printf("Shorter: %g\n", large);     // Shorter of %f or %e
    printf("Octal: %o\n", value);       // Octal representation

    return 0;
}

高级说明符包括用于十六进制的 %x/%X,用于科学计数法的 %e,用于紧凑浮点数显示的 %g,以及用于八进制的 %o。这些格式对于技术或调试输出非常有用。十六进制在低级编程中很常见。科学计数法可以高效地处理非常大或非常小的数字。

使用 printf 的最佳实践

来源

C printf 文档

本教程探讨了 C 语言中功能多样的 printf 函数。从基本的文本输出到高级格式化,printf 对于清晰的程序通信至关重要。通过练习这些示例来掌握格式化输出。

作者

My name is Jan Bodnar, and I'm a dedicated programmer with a deep passion for coding. Since 2007, I've been sharing my expertise through over 1,400 articles and 8 e-books. With more than a decade of teaching experience, I strive to make programming accessible and engaging.

列表 C 标准库