zoukankan      html  css  js  c++  java
  • printf

    manual:

    http://man7.org/linux/man-pages/man3/printf.3.html

        int printf(const char *format, ...);

     通过format格式串控制输出,调用成功返回输出字符个数(不包括null);失败返回负值。

        char buf1[256];
        sprintf(buf1, "%d %o %u %x %X %f ",    100, 100, 100, 188, 188, 100.123);
        //buf1= "100 144 100 bc BC 100.123000 " %f默认六位有效数字
    
        sprintf(buf1, "%d %#o %u %#x %#X %f ",    100, 100, 100, 188, 188, 100.123);
        //buf1 = "100 0144 100 0xbc 0XBC 100.123000 " %f默认六位有效数字
    
        sprintf(buf1, "%.2d %f %.4f %010.4f", 100, 100.123, 100.123, 100.123);
        //buf1 = "100 100.123000 100.1230 00100.1230" %f默认六位有效数字
    
        memset(buf1, 0, sizeof(buf1));
        sprintf(buf1, "%4d %10d", 100, 1888);
        //buf1 = " 100       1888"  右对其
    
        memset(buf1, 0, sizeof(buf1));
        sprintf(buf1, "%-4d %-10d", 100, 1888);
        //buf1 = "100  1888      " 左对齐
    
        memset(buf1, 0, sizeof(buf1));
        sprintf(buf1, "%04d %010d", 100, 1888);
        //buf1 = "0100 0000001888" 右对其
    
        memset(buf1, 0, sizeof(buf1));
        sprintf(buf1, "%*d", 4, 188);
        //buf1 = " 188"  右对其
    
        memset(buf1, 0, sizeof(buf1));
        sprintf(buf1, "%.4d",188);
        //buf1 = "0188"  右对其
    
        char str1[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G'}; 
        memset(buf1, 0, sizeof(buf1));
        sprintf(buf1, "%s", str1);
        //buf1 未知结束串
    
        memset(buf1, 0, sizeof(buf1));
        sprintf(buf1, "%.7s", str1);
        //buf1 = "ABCDEFG"
    
        memset(buf1, 0, sizeof(buf1));
        sprintf(buf1, "%#0*X", 8, 128);
        //buf1 = "0X000080" 

    格式串(关键摘要)

      格式串是由字符串组成,在初始化串中,由0个或者多个转换准则组成:

        1.普通字符(不包括%),直接拷贝到输出流中

        2.转换符,每一个转换符将取0个或者多个后续参数,每一个转换以'%'开始,以转换说明符结束,存在0或者多个标识,一个可选择的占位,一个可调节的精度,和一个长度修饰符。

      参数与转换符必须一致,默认是按照给定的顺序;如果出现 '%*' ,则请求下一个参数(参数不够将会失败)

    标识字符

      字符'%' 后0个 或者多个标识:

     #   值会显示另一种状态,对于o八进制转换,第一个字符会是0; x,X十六进制转换,结果不为0时增加'0x' 、‘0X’前缀。

     0 值前缀对齐用0填充,对于d, i, o, u, x, X, a, Ae, E, f, F, g,G转换,0填充左侧而不是空格

     - 值左对齐

    占位宽

      一个可选的十进制数字指定了最小占位宽,如果值少于占位宽,则会以空格填充。

    精度

      在转换里,以'.'标识,接一个十进制数字。对于d, i, o, u, x, and X转换,最小数字显示,不足则填充; a, A, e, E, f, and F 决定了基数的精度;g,G决定最大的精度;s,S决定了取最多的字符数。

    长度修饰

    integer : d, i, o, u, x, or X

    l : long int , unsigned long int

    ll : long long int , unsigned long long

    L : long double

    j:  intmax_t

    z : size_t

    t : pirdiff_t

  • 相关阅读:
    一波骚操作,我把 SQL 执行效率提高了 10,000,000 倍!
    如何优雅地根治null值引起的Bug!
    解锁新姿势:探讨复杂的 if-else 语句“优雅处理”的思路
    39 个奇葩代码注释,看完笑哭了。。。
    只要学会它,再多 Bug 也不怕
    SpringBoot 快速整合Mybatis(去XML化+注解进阶)
    Java 并发异步编程,原来十个接口的活现在只需要一个接口就搞定!
    微服务 2.0 技术栈选型手册
    如何设计 API 接口,实现统一格式返回?
    别在 Java 代码里乱打日志了,这才是打印日志的正确姿势!
  • 原文地址:https://www.cnblogs.com/iclk/p/3976660.html
Copyright © 2011-2022 走看看