【C#学习笔记04】深入掌握C语言格式化输出

引言

​printf()​​函数不仅可以将数据输出到控制台,还可以通过格式化字符串灵活地控制输出的格式。​​printf()​​​函数的使用规则,包括标志说明、字段宽度、转换精度、长度修饰、转换说明、转义字符和返回结果等内容。


1. ​​printf()​​函数概述

​printf()​​函数是C语言标准库中的一个格式化输出函数,定义在​​<stdio.h>​​头文件中。它的基本语法如下:

int printf(const char *format, ...);
  • format​:格式化字符串,用于指定输出的格式。
  • ...​:可变参数列表,用于提供要输出的数据。
  • 返回值:成功时返回输出的字符数,失败时返回负值。
#include <stdio.h>int main() {int num = 42;printf("The answer is %d\n", num);return 0;
}

输出

The answer is 42

2. 格式化字符串详解

格式化字符串是​​printf()​​函数的核心,它由普通字符和格式说明符组成。格式说明符以​​%​​​开头,用于指定输出的格式。

2.1 标志说明

标志用于控制输出的对齐方式、符号显示等。常见的标志包括:

  • -​:左对齐(默认右对齐)。
  • +​:显示正数的符号。
  • ​(空格):正数前显示空格,负数前显示负号。
  • #​:对八进制和十六进制数添加前缀(​​0​​或​​0x​​)。
  • 0​​:用前导零填充字段宽度。
#include <stdio.h>int main() {int num = 42;printf("|%10d|\n", num);   // 右对齐,宽度10printf("|%-10d|\n", num);  // 左对齐,宽度10printf("|%+d|\n", num);    // 显示符号printf("|% d|\n", num);    // 正数前显示空格printf("|%#x|\n", num);    // 十六进制带前缀printf("|%010d|\n", num);  // 前导零填充return 0;
}

输出

|        42|
|42        |
|+42|
| 42|
|0x2a|
|0000000042|

2.2 字段宽度

字段宽度用于指定输出的最小字符数。如果数据的实际宽度小于指定宽度,则用空格或前导零填充。

#include <stdio.h>int main() {int num = 42;printf("|%5d|\n", num);   // 宽度5printf("|%2d|\n", num);   // 宽度2(实际宽度大于指定宽度)return 0;
}

输出

|   42|
|42|

2.3 转换精度

转换精度用于指定浮点数的小数位数或字符串的最大字符数。精度以​​.​​开头,后跟一个整数。

#include <stdio.h>int main() {double pi = 3.1415926535;printf("|%.2f|\n", pi);   // 保留2位小数printf("|%.5s|\n", "Hello, World!");  // 输出前5个字符return 0;
}

输出

|3.14|
|Hello|

2.4 长度修饰

长度修饰用于指定参数的类型。常见的长度修饰符包括:

  • h​:短整型(如​​%hd​​表示​​short int​​)。
  • l​:长整型(如​​%ld​​表示​​long int​​)。
  • ll​:长长整型(如​​%lld​​表示​​long long int​​)。
  • L​:长双精度浮点型(如​​%Lf​​表示​​long double​​)。
#include <stdio.h>int main() {short num1 = 42;long num2 = 1234567890;long double pi = 3.1415926535;printf("|%hd|\n", num1);   // 短整型printf("|%ld|\n", num2);   // 长整型printf("|%.10Lf|\n", pi);  // 长双精度浮点型return 0;
}

输出

|42|
|1234567890|
|3.1415926535|

2.5 转换说明

转换说明符用于指定输出的数据类型。常见的转换说明符包括:

  • d​、​i​:有符号十进制整数。
  • u​:无符号十进制整数。
  • o​:无符号八进制整数。
  • x​、​X​:无符号十六进制整数(​​x​​表示小写,​​X​​表示大写)。
  • f​、​F​:浮点数。
  • e​、​E​:科学计数法表示的浮点数。
  • g​、​G​:根据值的不同自动选择​​f​​或​​e​​格式。
  • c​:字符。
  • s​:字符串。
  • p​:指针地址。
#include <stdio.h>int main() {int num = 42;double pi = 3.1415926535;char ch = 'A';char str[] = "Hello, World!";printf("|%d|\n", num);     // 十进制整数printf("|%x|\n", num);     // 十六进制整数(小写)printf("|%f|\n", pi);      // 浮点数printf("|%e|\n", pi);      // 科学计数法printf("|%c|\n", ch);      // 字符printf("|%s|\n", str);     // 字符串printf("|%p|\n", &num);    // 指针地址return 0;
}

输出

|42|
|2a|
|3.141593|
|3.141593e+00|
|A|
|Hello, World!|
|0x7ffee4b5c8fc|

2.6 转义字符

转义字符用于表示特殊字符或控制输出格式。常见的转义字符包括:

  • \n​:换行。
  • \t​:制表符。
  • \\​:反斜杠。
  • \"​:双引号。
  • \'​:单引号。
#include <stdio.h>int main() {printf("Hello,\nWorld!\n");  // 换行printf("Column1\tColumn2\n");  // 制表符printf("This is a backslash: \\\n");  // 反斜杠printf("He said, \"Hello!\"\n");  // 双引号return 0;
}

输出

Hello,
World!
Column1    Column2
This is a backslash: \
He said, "Hello!"

2.7 返回结果

​printf()​​函数返回成功输出的字符数。如果发生错误,则返回负值。

#include <stdio.h>int main() {int count = printf("Hello, World!\n");printf("Characters printed: %d\n", count);return 0;
}

输出

Hello, World!
Characters printed: 14

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/72171.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python-leetcode-定长子串中元音的最大数目

1456. 定长子串中元音的最大数目 - 力扣&#xff08;LeetCode&#xff09; 可以使用 滑动窗口 方法来解决这个问题。步骤如下&#xff1a; 初始化&#xff1a;计算前 k 个字符中元音字母的个数&#xff0c;作为初始窗口的值。滑动窗口&#xff1a;遍历字符串&#xff0c;每次右…

蓝桥真题讲解

第一题 题目链接 0贪吃蛇长度 - 蓝桥云课 题目解析 题意&#xff1a;数#个数和个数再加上首尾 代码原理 略 代码编写 略 填空题技巧 眼看手数 当然并不是真的一个一个数&#xff0c;我们需要借助一些工具&#xff0c;不过各位小伙伴们放心&#xff0c;我们借助的工具…

【C++ 函数模板】—— 模板参数推导、实例化策略与编译优化

欢迎来到ZyyOvO的博客✨&#xff0c;一个关于探索技术的角落&#xff0c;记录学习的点滴&#x1f4d6;&#xff0c;分享实用的技巧&#x1f6e0;️&#xff0c;偶尔还有一些奇思妙想&#x1f4a1; 本文由ZyyOvO原创✍️&#xff0c;感谢支持❤️&#xff01;请尊重原创&#x1…

Java基础入门流程控制全解析:分支、循环与随机数实战

引言 流程控制是编程语言的核心逻辑结构&#xff0c;决定了程序的执行顺序与逻辑判断能力。本文以 分支结构、循环结构 和 随机数生成 为核心&#xff0c;结合代码示例与底层原理&#xff0c;全面解析Java中流程控制的应用场景与实战技巧。 一、分支结构 1. if分支 作用&am…

Redis 数据持久化之RDB

Redis数据持久化策略 持久化策略之RDB RDB:在指定的时间间隔&#xff0c;执行数据集的时间点快照。 实现类似照片记录效果的方式&#xff0c;就是把某一时刻的数据和状态以文件的形式写到磁盘上&#xff0c;也就是读快照。这样一来即使故障宕机&#xff0c;快照文件也不会丢失&…

数据分析与AI丨AI Fabric:数据和人工智能架构的未来

AI Fabric 架构是模块化、可扩展且面向未来的&#xff0c;是现代商业环境中企业实现卓越的关键。 在当今商业环境中&#xff0c;数据分析和人工智能领域发展可谓日新月异。几乎每天都有新兴技术诞生&#xff0c;新的应用场景不断涌现&#xff0c;前沿探索持续拓展。可遗憾的是&…

MyBatis - XML 操作动态 SQL

目录 1. 前言 2. 动态插入 2.1 if 标签 2.2 trim 标签 2.2.1 注解完成动态 SQL 3. 动态查询 3.1 添加 1 1 3.2 where 标签 4. 动态更新 4.1 set 标签 5. foreach 标签 6. sql 标签 & include 标签 1. 前言 之前博文所讲的 MyBatis SQL 操作, 都必须按照注解或…

【最佳实践】Go 责任链模式实现参数校验

这里我们使用责任链模式来创建一个参数校验的示例。在这个示例中&#xff0c;我们将实现一个简单的责任链来校验不同的参数条件。这种模式允许我们将多个校验步骤串联在一起&#xff0c;以便可以在不同的条件下进行灵活的校验。 设计思路 接口定义 (Validator) 目的&#xff1…

深入理解Tomcat:Java Web服务器的安装与配置

大家好&#xff01;今天我们来聊聊Java Web开发中最重要的工具之一——Apache Tomcat。Tomcat是一个开源的Java Servlet容器和Web服务器&#xff0c;它是运行Java Web应用程序的核心环境。无论是开发、测试还是部署Java Web应用&#xff0c;Tomcat都是不可或缺的工具。本文将详…

小程序酒店:如何实现智能预订与在线支付?

在移动互联网快速发展的今天,酒店行业面临着前所未有的机遇与挑战。用户需求日益多样化,市场竞争愈发激烈,传统酒店预订方式已经难以满足现代消费者的需求。而小程序作为一种轻量化、便捷化的移动应用形式,正在成为酒店行业数字化转型的重要工具。通过小程序开发,酒店可以…

C#实现AES-CBC加密工具类(含完整源码及使用教程)

一、AES-CBC加密应用场景 AES&#xff08;Advanced Encryption Standard&#xff09;作为全球公认的安全加密标准&#xff0c;广泛使用在以下场景&#xff1a; API通信加密&#xff1a;保护HTTP接口传输的敏感数据&#xff08;如身份令牌、支付信息&#xff09;文件安全存储&…

docker-compose部署MongoDB分片集群

前言 MongoDB 使用 keyFile 进行 节点间身份验证,我们需要先创建一个 keyFile 并确保所有副本集的节点使用相同的 keyFile。 openssl rand -base64 756 > mongo-keyfile chmod 400 mongo-keyfiledocker-compose部署分片集群 无密码方式 # docker-compose-mongodb.yml s…

3-003:在 MySQL 中建索引时需要注意哪些事项?

在 MySQL 中创建索引时&#xff0c;需要注意以下事项&#xff0c;以确保索引高效且合理&#xff1a; 1. 选择合适的索引类型 主键索引&#xff08;PRIMARY KEY&#xff09;&#xff1a;每个表只能有一个&#xff0c;默认是聚簇索引。唯一索引&#xff08;UNIQUE&#xff09;&…

在 Linux 系统中,区分**磁盘(物理/虚拟存储设备)和分区(磁盘的逻辑划分)

在 Linux 系统中&#xff0c;区分**磁盘&#xff08;物理/虚拟存储设备&#xff09;和分区&#xff08;磁盘的逻辑划分&#xff09;**是管理存储的基础。以下是详细的区分方法和操作示例&#xff1a; 一、通过设备命名规则区分 Linux 中磁盘和分区的命名遵循特定规则&#xff…

MongoDB中的游标(Cursor)

游标&#xff08;Cursor&#xff09;在MongoDB中是一个重要的概念&#xff0c;它用于逐条遍历查询结果集&#xff0c;特别适用于处理大量数据时。 一、游标的定义与作用 定义&#xff1a; 游标是一种能从数据记录的结果集中每次提取一条记录的机制。在MongoDB中&#xff0c;游…

【从零开始学习计算机科学】编译原理(七)运行时刻环境

【从零开始学习计算机科学】编译原理(七)运行时刻环境 运行时刻环境存储组织空间的栈式分配活动树活动记录和控制栈简单栈式存贮分配C语言的过程调用和过程返回时的存贮管理堆式存储分配堆式存储分配的功能垃圾回收基于跟踪的垃圾回收短停顿垃圾回收运行时刻环境 存储组织 …

2025-03-08 学习记录--C/C++-PTA 习题10-1 判断满足条件的三位数

合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、题目描述 ⭐️ 裁判测试程序样例&#xff1a; #include <stdio.h> #include <math.h>int search( int n );int…

【ArcGIS】地理坐标系

文章目录 一、坐标系理论体系深度解析1.1 地球形态的数学表达演进史1.1.1 地球曲率的认知变化1.1.2 参考椭球体参数对比表 1.2 地理坐标系的三维密码1.2.1 经纬度的本质1.2.2 大地基准面&#xff08;Datum&#xff09;的奥秘 1.3 投影坐标系&#xff1a;平面世界的诞生1.3.1 投…

DeepSeek刷力扣辅助题单 存留记录

最近感觉被什么东西阻挡了脚步,经大佬建议,做算法题提升一下思维 首先,我不认为算法题要死磕,因为我没有那个天赋,但是我还是要嘴硬一下 其次,我没有计算机基础的学习背景,因为我是修飞机专升本来的自动化专业,24年七月几乎零基础学习Unity 和 C#,努力学习到现在感觉已经尽力了…

化工厂防爆气象站:为石油化工、天然气等领域提供安全保障

【TH-FB02】在石油化工、天然气等高危行业中&#xff0c;安全生产是至关重要的。这些行业常常面临着易燃易爆、有毒有害等潜在风险&#xff0c;因此&#xff0c;对气象条件的监测和预警显得尤为重要。化工厂防爆气象站作为一种专门设计用于这些特殊环境的气象监测设备&#xff…