博客
关于我
printf的格式控制字符串
阅读量:795 次
发布时间:2023-03-04

本文共 2462 字,大约阅读时间需要 8 分钟。

C语言中的格式控制字符串是用于定格式化输出的重要工具,能够帮助程序按照特定要求输出数据。格式控制字符串由格式字符串和非格式字符串两种组成,通过格式字符串指定输出格式,非格式字符串则用于提示性输出。本文将详细介绍C语言格式控制字符串的使用方法及其相关规则。

格式字符串的结构

C语言中的格式字符串通常采用以下格式:

[标志][输出最小宽度][.精度][长度]类型

其中,方括号内的各项为可选项。这些选项分别具有不同的意义,具体如下:

1) 类型

类型字符用于指定输出数据的类型及其表现形式,常见类型字符包括:

  • %d:按十进制整型输出,正数不显示符号。
  • %ld:按长整型输出,适用于较大的整数值。
  • %c:输出单个字符。
  • %s:输出字符串。
  • %f%lf:输出浮点数。
  • %e%le:输出指数形式的浮点数。
  • %g%lg:输出general形式的浮点数。

2) 标志

标志字符用于调整输出格式,常见标志字符包括:

  • -:左对齐,右边填充空格。
  • +:显示正负号,正数前添加空格,负数前添加负号。
  • #:对字符、字符串、整型和无符号整型等有特殊处理,避免前置0或小数点。
  • 空格:输出值为正时前添加空格,负数前直接显示负号。

3) 输出最小宽度

输出最小宽度用于定义输出的最小宽度,若实际输出长度少于该宽度,则左边或右边补充空格或0。例如:

  • %6d:输出6位十进制整数,左边补充空格。
  • %06d:输出6位十进制整数,左边补充0。

4) 精度

精度用于定义输出的小数位数,格式字符串中使用.号开头,后跟数字表示小数位数。例如:

  • %6.4f:输出6列浮点数,保留4位小数。
  • %18.16lf:输出18列长浮点数,保留16位小数。

5) 长度

长度用于定义输出的数据类型,常用的长度字符包括:

  • h:短整型量。
  • l:长整型量。

实际应用示例

以下是一个使用C语言格式控制字符串的实际程序示例:

#include 
#include
int main() { char c, s[20]; int a = 1234; float f = 3.141592653589; double x = 0.12345678912345678; strcpy(s, "Hello,World"); c = '\x41'; // ASCII码41对应字符'A' // 基本使用示例 printf("a=%d\n", a); // 输出十进制整数:a=1234 printf("a=%d%%\n", a); // 输出带格式的字符串:a=1234% // 定义输出宽度 printf("a=%6d\n", a); // 左边补空格,输出6位:a= 1234 printf("a=%06d\n", a); // 左边补0,输出6位:a=001234 // 浮点数输出 printf("f=%f\n", f); // 输出浮点数:f=3.141593 printf("f=%6.4f\n", f); // 输出6列,保留4位小数:f=3.1416 // 长浮点数输出 printf("x=%lf\n", x); // 输出长浮点数:x=0.123457 printf("x=%18.16lf\n", x); // 输出18列,保留16位小数:x=0.1234567891234567 // 字符输出 printf("c=%c\n", c); // 输出字符:c=A printf("c=%x\n", c); // 输出十六进制字符码:c=41 // 字符串输出 printf("s[]=%s\n", s); // 输出字符串:s[]=Hello,World printf("s[]=%6.9s\n", s); // 输出最多9个字符:s[]=Hello,Wor return 0;}

高级使用示例

在实际项目中,格式控制字符串可以用于日志输出或报错信息。例如:

#define LOGI(message, ...) printf("\n(%04X)%s[%04d]%16s: " message, (unsigned int)1, __FILE__, __LINE__, __FUNCTION__, ##__VA_ARGS__)#define LOGW(message, ...) printf("\n(%04X)%s[%04d]%-16s:: " message, (unsigned int)2, __FILE__, __LINE__, __FUNCTION__, ##__VA_ARGS__)#define LOGE(message, ...) printf("\n(%04X)%s[%04d]%-16s::: " message, (unsigned int)3, __FILE__, __LINE__, __FUNCTION__, ##__VA_ARGS__)#define LOGF(message, ...) printf("\n(%04X)%s[%04d]%-16s:::: " message, (unsigned int)4, __FILE__, __LINE__, __FUNCTION__, ##__VA_ARGS__)// 使用示例LOGI("程序初始化成功");LOGW("错误代码:%d", errcode);LOGE("严重错误:无法打开文件");LOGF("信息:已加载配置文件");

通过合理使用C语言的格式控制字符串,可以显著提升程序的可读性和用户体验。格式字符串的灵活性使其成为每个C程序员的必备工具。

转载地址:http://cqxfk.baihongyu.com/

你可能感兴趣的文章
PNETLab 镜像包官方下载太慢?不急,最新版本PNET_4.2.10分享!
查看>>
POCO库中文编程参考指南(4)Poco::Net::IPAddress
查看>>
Quartz基本使用(二)
查看>>
POC项目安装与使用指南
查看>>
Podman核心技术详解
查看>>
pods 终端安装 第三方框架的一些命令
查看>>
Podzielno
查看>>
PoE、PoE+、PoE++ 三款交换机如何选择?一文带你了解
查看>>
PoE三种标准:标准 PoE、PoE+、PoE++,网络工程师必知!
查看>>
POI 的使用
查看>>
poi 读取单元格为null者空字符串
查看>>
poi-tl简介与文本/表格和图片渲染
查看>>
pointnet分割自己的点云数据_PointNet解析
查看>>
POI实现Excel导入Cannot get a text value from a numeric cell
查看>>
POI实现Excel导入时提示NoSuchMethodError: org.apache.poi.util.POILogger.log
查看>>
POI实现Excel导出时常用方法说明
查看>>
POI导出Excel2003
查看>>
POI数据获取及坐标纠偏
查看>>
Quartz入门看这一篇文章就够了
查看>>
POI解析Excel【poi的坑——空行处理】
查看>>