C语言,printf函数的多种格式化字符串的方式

 在C语言中,printf函数提供了多种格式化字符串的方式,以下是一些常见的字符串格式化方式:

1. %s —— 默认字符串输出

  • 格式%s

  • 说明:输出整个字符串,直到遇到字符串的终止符'\0'

  • 示例

    char str[] = "Hello, World!";
    printf("%s\n", str);
  • 输出

    Hello, World!

2. %.*s ——限制输出长度

%.*s的详细介绍:%.*s——C语言中printf 函数中的一种格式化输出方式-优快云博客

  • 格式:printf("%.*s",n,str).

  • 说明:有两个参数,输出字符串的前n个字符,其中n是一个变量。

  • 高级用法——输出特定区间的字符串  printf("%.*s",m-n,str+n).输出下标区间n——m-1的字符串

  • 示例

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

    Hello

3. %.Ns —— 最大宽度输出(可少不可多)

  • 格式%.Ns

  • 说明:输出字符串,但最多输出N个字符。如果字符串长度小于N,则全部输出;如果字符串长度大于N,则只输出前N个字符。

  • 示例

    char str[] = "Hello, World!";
    printf("%.10s\n", str); // 输出前10个字符
  • 输出

    Hello, Wor

4. %Ns —— 最小宽度输出(多可以,少则前面补空格)

  • 格式%Ns

  • 说明:输出字符串,确保输出的总宽度至少为N。如果字符串长度小于N,则在字符串前面补空格;如果字符串长度大于N,则全部输出。

  • 示例

    char str[] = "Hello";
    printf("%10s\n", str); // 输出宽度为10,字符串长度不足10时前面补空格
  • 输出

         Hello

5. %-Ns —— 左对齐最小宽度输出(多可以,少则后面补空格)

  • 格式%-Ns

  • 说明:输出字符串,确保输出的总宽度至少为N。如果字符串长度小于N,则在字符串后面补空格,使字符串左对齐。

  • 示例

    char str[] = "Hello";
    printf("%-10s\n", str); // 输出宽度为10,字符串长度不足10时后面补空格
  • 输出

    Hello

6. %N.Ms -——最小宽度和最大宽度结合

  • 格式%N.Ms

  • 说明:输出字符串,确保输出的总宽度至少为N,但最多输出M个字符。如果字符串长度小于N,则在字符串前面补空格;如果字符串长度大于M,则只输出前M个字符。

  • 示例

    char str[] = "Hello, World!";
    printf("%10.10s\n", str); // 输出宽度为10,最多输出10个字符
  • 输出

    Hello, Wor

7. %-N.Ms - 左对齐和最大宽度结合

  • 格式%-N.Ms

  • 说明:输出字符串,确保输出的总宽度至少为N,但最多输出M个字符。如果字符串长度小于N,则在字符串后面补空格,使字符串左对齐;如果字符串长度大于M,则只输出前M个字符。

  • 示例

    char str[] = "Hello, World!";
    printf("%-10.10s\n", str); // 输出宽度为10,最多输出10个字符,左对齐
  • 输出

    Hello, Wor

完整示例

以下是一个完整的示例,展示了上述各种格式化方式的使用:

c复制

#include <stdio.h>

int main() {
    char str[] = "Hello, World!";

    // 默认输出
    printf("Default: %s\n", str);

    // 限制输出长度
    printf("First 5 characters: %.*s\n", 5, str);
     //输出特定区间的字符串
	 printf("First 5 characters: %.*s\n", 5-1, str+1);//输出下标1——4的字符串 

    // 固定宽度输出
    printf("Fixed width 10: %.10s\n", str);

    // 最小宽度输出
    printf("Minimum width 10: %10s\n", str);

    // 左对齐输出
    printf("Left aligned, width 10: %-10s\n", str);

    // 最小宽度和最大宽度结合
    printf("Minimum width 10, max 10: %10.10s\n", str);

    // 左对齐和最大宽度结合
    printf("Left aligned, width 10, max 10: %-10.10s\n", str);

    return 0;
}

输出

复制

Default: Hello, World!
First 5 characters: Hello
First 5 characters: ello  
Fixed width 10: Hello, Wor
Minimum width 10:     Hello, World!
Left aligned, width 10: Hello, World!    
Minimum width 10, max 10:     Hello, Wor
Left aligned, width 10, max 10: Hello, Wor 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值