发新帖我要提问
12
返回列表
打印
[经验分享]

C语言printf用法详解

[复制链接]
楼主: loutin
手机看帖
扫描二维码
随时随地手机跟帖
21
chenci2013| | 2025-3-14 11:58 | 只看该作者 回帖奖励 |倒序浏览
printf函数是C语言中强大的格式化输出工具,通过使用格式说明符和修饰符,可以灵活地控制输出数据的格式

使用特权

评论回复
22
hearstnorman323| | 2025-3-14 16:49 | 只看该作者
格式符        类型        示例        说明
%d        int        printf("%d\n", 123);        输出十进制整数
%hd        short int        printf("%hd\n", -5);        输出短整型
%hu        unsigned short int        printf("%hu\n", 10000U);        输出无符号短整型
%ld        long int        printf("%ld\n", 123456789L);        输出长整型
%lld        long long int        printf("%lld\n", 123456789LL);        输出长长整型(C99)
%lu        unsigned long int        printf("%lu\n", 1000000000UL);        输出无符号长整型
%llu        unsigned long long int        printf("%llu\n", 1234567890000000000ULL);        输出无符号长长整型(C99)

使用特权

评论回复
23
deliahouse887| | 2025-3-15 12:26 | 只看该作者
主要用于控制浮点数的输出和小数点后的位数,或者字符串的最大输出长度。对于浮点数,精度控制可以指定小数点后的位数;对于字符串,可以指定最大输出的字符数。例如:%.2f表示输出的小数点后两位;%.*s则通过后续的参数来指定字符串的最大输出长度。

使用特权

评论回复
24
lzbf| | 2025-3-15 12:37 | 只看该作者
根据不同的format字符串,函数可能需要一系列的附加参数,每个参数包含了一个要被插入的值,替换了format参数中指定的每个%标签。关于附加参数,既可以是变量,也可以是常量。
附加参数的位置:printf函数的普通字符和转换说明放在" "双引号内,附加参数放在双引号外,每个附加参数之间用逗号隔开。
附加参数的个数:printf的附加参数与转换说明符是一一对应关系,如果有n个转换说明符,printf的参数就应该有n+1个。如果参数个数少于对应的转换说明符,printf可能会输出内存中的任意值。

使用特权

评论回复
25
mollylawrence| | 2025-3-15 14:46 | 只看该作者
在多线程环境中使用 printf 时,需要注意线程安全性问题,可能需要使用互斥锁或其他同步机制来保护输出。

使用特权

评论回复
26
belindagraham| | 2025-3-15 15:11 | 只看该作者
用%0X%p打印地址和十六进制值,排查内存问题。

使用特权

评论回复
27
everyrobin| | 2025-3-15 19:51 | 只看该作者
使用 printf 时,必须确保提供的参数类型与转换说明符匹配,否则可能会导致未定义行为。

使用特权

评论回复
28
hudi008| | 2025-3-15 20:43 | 只看该作者
格式化字符串由普通字符和格式说明符组成。普通字符将按原样输出,而格式说明符以 % 开头,用于指定如何输出参数。

使用特权

评论回复
29
sdCAD| | 2025-3-15 22:38 | 只看该作者
指定最少输出的字符数。如果实际输出的字符数小于这个宽度,默认情况下会在左边填充空格。可以通过在宽度前加一个减号(-)来改变对齐方式。例如:%5d表示输出宽度至少为5的整数,不足部分用空格填充在左侧;而%-5d则表示在右侧填充空格。

使用特权

评论回复
30
maqianqu| | 2025-3-15 23:00 | 只看该作者
使用 %s 输出字符串时,要确保提供的字符串指针是有效的,并且字符串是以空字符 \0 结尾的。

使用特权

评论回复
31
lzmm| | 2025-3-16 11:16 | 只看该作者
‌printf函数是C语言中用于格式化输出的函数,通过在格式字符串中使用以%开头的格式说明符,可以输出不同类型的数据

使用特权

评论回复
32
elsaflower| | 2025-3-16 12:44 | 只看该作者
转换说明符通常由 % 符号开始,后跟一个字符,用于指定数据的类型。以下是一些常见的转换说明符:

%d 或 %i:整数(十进制)
%u:无符号整数(十进制)
%o:无符号整数(八进制)
%x 或 %X:无符号整数(十六进制,小写或大写)
%f:浮点数(十进制小数)
%e 或 %E:浮点数(指数表示法)
%g 或 %G:浮点数(使用 %f 或 %e 的最紧凑形式)
%c:字符
%s:字符串
%p:指针(十六进制表示)
%%:输出一个 % 字符

使用特权

评论回复
33
robertesth| | 2025-3-16 13:16 | 只看该作者
#include <stdio.h>

int main() {
    int num = 123;
    float pi = 3.14159;
    char letter = 'A';
    char str[] = "Hello, World!";

    printf("整数:%d\n", num);
    printf("浮点数:%.2f\n", pi); // 保留两位小数
    printf("字符:%c\n", letter);
    printf("字符串:%s\n", str);
    printf("十六进制:%x\n", num);
    printf("指针地址:%p\n", (void *)&num);
    printf("百分号:%%\n");

    return 0;
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则