当前位置: 首页 > article >正文

%.*s——C语言中printf 函数中的一种格式化输出方式

在C语言中,%.*sprintf 函数中的一种格式化输出方式,用于控制字符串的输出长度。具体来说,%.*s 中的 * 表示输出宽度(即最多输出的字符数)是一个变量,这个变量的值在运行时通过 printf 函数的参数传递。

了解更多C语言字符串输出格式点击:C语言,printf函数的多种格式化字符串的方式-CSDN博客

格式说明

  • %.*s:其中 * 表示输出宽度是一个变量。

    • %:格式化输出的开始标志。

    • *:表示输出宽度(即最多输出的字符数)是一个变量。

    • s:表示输出的类型是字符串。

使用方法

在使用 %.*s 时,需要在 printf 函数中提供两个参数:

  1. 输出宽度(一个整数)。

  2. 要输出的字符串。

示例

假设我们有一个字符串 str 和一个整数 width,我们希望输出 str 的前 width 个字符,可以这样写:

char str[] = "Hello, World!";
int width = 5;
printf("%.*s\n", width, str);

输出

Hello

在这个例子中,width 的值为 5,所以 printf 函数只输出 str 的前 5 个字符,即 Hello

应用场景

  1. 限制输出长度:在处理用户输入或文件内容时,有时需要限制输出的字符串长度,以避免过长的输出。

  2. 格式化输出:在生成日志文件或格式化输出时,可以使用 %.*s 来控制每行的输出长度,使输出更加整齐。

完整示例

以下是一个完整的示例,展示了如何使用 %.*s 来输出字符串的指定长度部分:

#include <stdio.h>

int main() {
    char str[] = "This is a long string that we want to truncate.";
    int width1 = 10;
    int width2 = 15;

    printf("First 10 characters: %.*s\n", width1, str);
    printf("First 15 characters: %.*s\n", width2, str);

    return 0;
}

输出

First 10 characters: This is a 
First 15 characters: This is a long

在这个示例中,我们分别输出了字符串的前 10 个字符和前 15 个字符,展示了 %.*s 的使用方法。

高级用法:输出特定区间的字符串(本质是指针的移动)

由于下标从零开始,所以,想从索引几开始,字符串首地址就移动几位

假设你有一个字符串 "Hello, World!",你想输出从索引 7 开始的长度为 5 的子字符串(即 "World"):

char str[] = "Hello, World!";
int start = 7;  // 起始位置
int length = 5; // 输出长度

// 计算子字符串的起始指针
char *sub_str = str + start;//

// 使用 %.*s 输出子字符串
printf("%.*s\n", length, sub_str);  // 输出: World

http://www.kler.cn/a/508419.html

相关文章:

  • unity学习18:unity里的 Debug.Log相关
  • 初识go语言之指针用法
  • Oracle查询-in条件超过1000
  • C 语言运算符的优先级和结合性
  • 阀井可燃气体监测仪,开启地下管网安全新篇章-旭华智能
  • 梁山派入门指南4——定时器使用详解,包括定时器中断、PWM产生、输入捕获测量频率
  • 介绍UDP协议
  • PCL 点云按时间进行渲染赋色【2025最新版】
  • 图像处理|闭运算
  • 2025.1.16——三、supersqli 绕过|堆叠注入|handler查询法|预编译绕过法|修改原查询法
  • 快慢指针:链表问题的利器
  • unity免费资源2025-1-17
  • Java合并多个List集合的方法
  • AUTOSAR从入门到精通专栏总目录
  • Linux手写FrameBuffer任意引脚驱动spi屏幕
  • Django多线程爬虫:突破数据抓取瓶颈
  • sparkRDD教程之必会的题目
  • Oracle graph 图数据库体验-安装篇
  • 一文简要了解为什么需要RAG、核心原理与应用场景
  • 陈萍的设计创新:Kevlin Nexus荣获伦敦设计奖,展示品牌设计的国际化与持续创新
  • 【12】Word:张老师学术论文❗
  • 专业130+总分410+西安交通大学815/869原909信号与系统考研电子信息与通信工程。真题,大纲,参考书。
  • 云IDE:开启软件开发的未来篇章
  • 用大白话讲明白JWT
  • Node.js - Express框架
  • Android 实现多语言功能