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

原文地址:https://www.cnblogs.com/iclk/p/3976660.html