C语言格式化输出小汇总

格式化输出在C语言中非常常用,提供了多种用法来控制输出的格式。下面是一些常见的格式化输出用法:

基础

  1. 整数输出:

    • "%d":以十进制整数形式输出。

    • "%x":以十六进制整数形式输出(小写字母)。

    • "%X":以十六进制整数形式输出(大写字母)。

    • "%o":以八进制整数形式输出。

  2. 浮点数输出:

    • "%f":以十进制浮点数形式输出。

    • "%e":以指数形式(科学计数法)输出。

    • "%g":以十进制或指数形式输出,根据数值大小自动选择合适的表示方式。

  3. 字符和字符串输出:

    • "%c":输出一个字符。

    • "%s":输出一个字符串。

  4. 宽度和精度控制:

    • "%Nd":指定输出的整数最小宽度为N,不足N位的整数会在前面用空格填充,负号计入总宽度。

    • "%N.mf":指定输出的浮点数最小宽度为N,保留m位小数。不足N位的浮点数会在前面用空格填充,小数位数不足m位的会进行四舍五入,负号和小数点计入总宽度。

    • "%-Nd":指定输出的整数最小宽度为N,并左对齐输出。

    • "%0Nd":指定输出的整数最小宽度为N,不足N位的在前面用零进行填充。

进阶

当涉及到格式化输出时,C语言提供了丰富的选项来控制输出的样式。以下是一些进一步的格式化输出选项:

  1. 对齐方式:

    • "%-Nd":指定整数最小宽度为N,并左对齐输出。

    • "%Nd":指定整数最小宽度为N,并右对齐输出(默认方式)。

  2. 正负号的显示:

    • "%+d":显示正数的正号,负数的负号。

    • "% d":正数前面加空格,负数前面加负号。

    • "%d":正数不显示符号,负数显示负号(默认方式)。

  3. 填充字符:

    • "%0Nd":指定整数最小宽度为N,并在前面用零进行填充。

    • "%Nd":指定整数最小宽度为N,默认使用空格进行填充(默认方式)。

  4. 宽度和精度控制:

    • "%*d":使用一个额外的整数参数来动态指定宽度。

    • "%.*f":使用一个额外的整数参数动态指定小数位数的精度。

      • #include <stdio.h>
        int main() {
          int width = 5;
          int num = 42;
        	double PI = 3.1415926545;
        	printf("%.*lf\r\n",width,PI);//以width动态的指定输出的保留小数的长度
         printf("%0*d\n", width, num);//以width动态的指定输出的d的长度
        
         return 0;
        }

  5. 字符串输出的限制:

    • "%.Ns":表示将字符串限制为恰好N个字符的输出。如果字符串的长度超过5个字符,那么只会输出前N个字符,截断后面的字符。如果字符串的长度不足N个字符,输出将包含所有可用字符,但不会进行填充。

    • "%Ns":表示将字符串限制为最多N个字符的输出。如果字符串的长度超过N个字符,那么只会输出前N个字符,不会截断字符串。如果字符串的长度不足N个字符,输出将包含空格填充以达到N个字符的宽度。

  6. 强制输出符号和基数:

    • "%#x":以十六进制形式输出,并在前面加上"0x"前缀。

    • "%#o":以八进制形式输出,并在前面加上"0"前缀。

    • "%#f":以十进制浮点数形式输出,并始终包含小数点。

  7. 指定输入

  8.       %[..]   :允许指定一个字符集或字符范围,以便匹配特定类型的输入
    常见用法:
    扫描字符集:%[abc]表示匹配字符集中的任何一个字符。例如,%[abc]将匹配字符'a'、'b'或'c'。

    排除字符集:%[^abc]表示排除字符集中的任何一个字符。例如,%[^abc]将匹配除了字符'a'、'b'和'c'之外的任何字符。

    字符范围:%[a-z]表示匹配字符范围内的任何一个字符。例如,%[a-z]将匹配小写字母'a'到'z'之间的任何字符。

    多个字符集和字符范围:%[abcxyz]表示匹配字符集中的任何一个字符,或者%[a-z0-9]表示匹配小写字母和数字字符范围内的任何一个字符。

    结合其他格式化参数使用:%[^\n]表示匹配除了换行符之外的任何字符,用于扫描一行文本。

    #include <stdio.h>
    
    int main() {
        char input[] = "asdw:af123:14512";
        char str1[100];
        char str2[100];
        char str3[100];
    
        sscanf(input, "%[^:]:%[^:]:%s", str1, str2, str3);
    
        printf("str1: %s\n", str1);
        printf("str2: %s\n", str2);
        printf("str3: %s\n", str3);
    
        return 0;
    }


    如:有一个字符串“asdw:af123:14512”,要求使用提取此字符串中以':'位间隔的三段字符串,分别到str1,str2,str3中:
    示范代码:
     

  9. 控制输出的总体格式:

    • "%flags.precisionspecifier":格式化字符串的一般形式,可以组合使用各种标志、宽度、精度和长度修饰符。

    "%flags.precisionspecifier"是格式化输出的一般形式,它提供了更大的灵活性来控制输出的样式。下面是对这个格式化字符串的各个部分进行解释:

    • flags:标志位,用于控制输出的一些特殊行为。常见的标志位包括:

      • "-":左对齐输出。

      • "+":显示正数的正号,负数的负号。

      • " "(空格):正数前面加空格,负数前面加负号。

      • "0":在整数宽度不足时使用零进行填充。

      • "#":对于八进制和十六进制输出,添加前缀"0"和"0x"。

    • width:宽度字段,用于指定输出的最小宽度。可以使用一个整数值来指定宽度,不足宽度的部分会用空格进行填充。也可以使用"*"来动态指定宽度,需要额外的整数参数。

    • .precision:精度字段,用于指定浮点数的小数位数或字符串的截断长度。可以使用一个整数值来指定精度,例如"%.2f"表示保留两位小数。也可以使用"*"来动态指定精度,需要额外的整数参数。

    • length:长度修饰符,用于指定整数或浮点数的长度。常见的长度修饰符有:

      • "h":将整数或浮点数参数视为short类型或double类型。

      • "l":将整数或浮点数参数视为long类型或long double类型。

      • "ll":将整数参数视为long long类型。

      • "L":将浮点数参数视为long double类型。

    • specifier:指定输出的类型。常见的输出类型包括:

      • "d":以十进制整数形式输出。

      • "x":以十六进制整数形式输出(小写字母)。

      • "X":以十六进制整数形式输出(大写字母)。

      • "o":以八进制整数形式输出。

      • "f":以十进制浮点数形式输出。

      • "e":以指数形式(科学计数法)输出。

      • "g":以十进制或指数形式输出,根据数值大小自动选择合适的表示方式。

      • "c":输出一个字符。

      • "s":输出一个字符串。

    通过使用这些选项和修饰符的组合,您可以更精确地控制格式化输出的样式。根据具体需求,可以选择适当的选项,并根据需要添加更多的格式化输出语句来满足需求。

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值