C语言中的printf输出
本文最后更新于 2 天前,其中的信息可能已经有所发展或是发生改变|´・ω・)ノ

printf 函数是C语言标准库中最基础、最常用的输出函数,其名称源于 “print formatted”(格式化打印)。它用于将程序的数据、结果和信息以格式化的方式输出到标准输出设备(通常是屏幕)。

壹、printf的基本用法

一、函数原型与核心功能

printf 函数的原型如下:

int printf(const char *format, ...);

format 参数:这是一个字符串,称为格式控制字符串。它包含两类内容:

  • 普通字符:会原样输出。
  • 格式说明符(占位符):% 开头,指定了后续参数应以何种形式被插入到字符串中输出。

… 参数:这是一个可变参数列表,其数量、类型必须与 format 字符串中的格式说明符

返回值:返回成功输出的字符总数,通常较少使用。

二、一个简单的示例

最简单的 printf 调用是直接输出一个字符串:

printf("Hello, World!"); //输出:Hello, World!

当需要将变量或表达式的值嵌入到文本中输出时,就需要使用格式说明符:

int age = 25;
printf("I am %d years old.\n", age); //%d 是一个格式说明符,将会被变量age的值替换

输出:

I am 25 years old.

三、工作流程

1.printf 解析 format 字符串。

2.遇到普通字符,直接输出。

3.遇到格式说明符(如 %d),则从后续参数列表中取出一个对应类型的变量,将其转换为指定的格式字符串,并输出。

4.如此循环,直到整个格式字符串处理完毕。

理解了这些基本概念后,我们就可以深入探讨格式说明符的具体用法和强大功能了。

贰、格式说明符

在 C 语言中,printf 函数在大多数情况下需配合格式说明符(常称为占位符)使用。格式说明符的主要作用如下(以下为常用说明符总结):

一、格式化输出不同类型的数据

1.整型数据 [int](%d / %i)

用于输出十进制整数。%d%i 在绝大多数情况下可互换使用。例如:

printf("%d", 10); //输出:10 
printf("%i", -5); //输出:-5

2.单精度浮点型数据 [float](%f)

用于输出单精度浮点数。默认保留小数点后六位,可通过精度控制指定小数位数,控制精度的格式为 %.nf‘n’用数字代替。例如:

printf("%f", 3.14159);   //输出:3.141590 
printf("%.2f", 3.14159); //输出:3.14 
printf("%.3f", 3.14159); //输出:3.142(四舍五入) 
printf("%.1f", 3.14159); //输出:3.1

3.字符型数据 [char](%c)

用于输出单个字符。例如:

printf("%c", 'A'); //输出:A

4.字符串 [char[]](%s)

用于输出字符串。例如:

printf("%s", "Hello, World!"); //输出:Hello, World!

5.无符号整型 [unsigned int](%u)

用于输出无符号整数(非负数)。若误用 %d 输出较大的无符号数,可能因解释方式不同而显示负数。例如:

unsigned int num = 65535; 
printf("%u", num); //输出:65535

6.长整型 [long] / [long long](%ld / %lld)

用于输出长整型数据。注意 long 使用小写 “l”,而非大写 “I”。例如:

printf("%ld", 123456789L); //输出:123456789 
printf("%lld", 123456789012345LL); //输出:123456789012345

对应的无符号类型占位符为 %lu%llu,常量后缀为 ULULL

7.双精度浮点型数据 [double](%lf)

用于输出双精度浮点数。默认同样保留六位小数,支持精度控制。例如:

printf("%lf", 0.1); //输出:0.100000 
printf("%.2lf", 3.14159); //输出:3.14

二、格式控制功能

1.指定输出宽度

在占位符中指定数字可控制最小输出宽度,不足时默认右对齐补空格。例如:

printf("%5d", 10);

输出:

   10//(前补3空格)

2.左对齐(- 符号)

使用 可实现左对齐。例如:

printf("%-5d", 10);

输出:

10   //(后补3空格)

3.补零(0 符号)

在宽度前加 0 可补零而非空格。例如:

printf("%05d", 10);

输出:

00010

4.动态指定宽度和精度( * 符号)

可以使用星号 * 来动态地指定输出的宽度和精度,对应的值由 printf 函数中对应位置的参数提供。

  • 动态宽度

格式为 %*d、%*f 等。第一个参数提供宽度值,下一个参数对应的是输出的数据。例如:

int width = 6;
int num = 123;
printf("%*d", width, num); //相当于"%6d",输出:"   123"

也可以动态地进行补零,格式为 %0*d ,注意这个‘ 0 ‘一定要在‘ * ‘之前。例如:

printf("%0*d", 4, 123); //相当于"%04d",输出"0123"
  • 动态精度

格式为 %.*f,%.*s 等。同样的,第一个参数提供精度值,下一个参数对应的是输出的数据,对于字符串 %.*s,可以限制输出的最大字符数。例如:

int precision = 3;
float pi = 3.14159;
printf("%.*f", precision, pi); //相当于 "%.3f",输出:"3.142"

const char* str = "HelloWorld";
int len = 5;
printf("%.*s", len, str); //输出前5个字符:"Hello"
  • 同时动态地指定宽度和精度

格式为 %*.*f 等。第一个参数提供宽度值,下一个参数提供精度,最后一个参数是输出的数据。例如:

int w = 8;
int p = 2;
float value = 3.14159;
printf("%*.*f", w, p, value); //等同于 "%8.2f",输出:"    3.14"(前面有4个空格)

叁、转义字符

转义字符以反斜杠(\)开头,用于表示特殊字符或控制输出格式。

一、输出特殊字符

如需输出以下字符,需使用转义序列:

  • \’:单引号
  • \”:双引号
  • \?:问号
  • \\:反斜杠

二、格式控制

1.换行(\n

用于换行操作。例如:

printf("a = 1\nb = 2");

输出:

a = 1
b = 2

2.水平制表符(\t

用于输出一个制表符,相当于按一次Tab键。它通常用于在输出中创建固定的水平间隔,以对齐文本的列。例如:

printf("Name\tAge\nJohn\t20\nAlice\t25");

输出结果类似于:

Name  Age 
John  20 
Alice 25

注意:\t 占据的具体宽度(显示为几个空格)取决于编译器或终端的环境设置,但通常约为4或8个字符的宽度。它的目的是跳到下一个“制表位”,从而高效地实现列对齐。

肆、补充说明

一、printf 可连接多个字符串

printf 支持直接拼接多个字符串,无需使用占位符。例如:

printf("Hello " "World"); //输出:Hello World 
printf("Hello " 
       "World"); //输出:Hello World

二、字符与整型的占位符互换

字符型(char)可使用 %d 输出其 ASCII 码值:

printf("%d", 'a'); //输出:97

整型(0~255 范围内)也可使用 %c 输出对应字符:

printf("%c", 97); //输出:a

三、输出百分号(%)

在 printf 的格式化字符串中,百分号 % 用于引入格式说明符(如 %d, %f)。因此,要输出一个真正的百分号字符,需要使用两个连续的百分号 %% 。

printf("60%%"); //输出60%

伍、结语

本文总结了C语言中 printf 函数中格式说明符和转义字符的常见用法与细节。C语言标准库功能浩如烟海,本文内容仅基于笔者常用经验所作总结,难免存在疏漏或表述不准确之处。

如有错误,欢迎指正;若有其他实用技巧或细节补充,也欢迎交流分享。 共同学习,共同进步。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇