• 字符串格式化命令 sprintf


    原型

    int sprintf( char *buffer, const char *format, [ argument] … );

    参数列表

    bufferchar型指针,指向将要写入的字符串的缓冲区。
    format:格式化字符串。
    [argument]...:可选参数,可以是任何类型的数据。
    返回值:字符串长度(strlen
     
    sprintf格式的规格如下所示。[]中的部分是可选的。
    %[指定参数][标识符][宽度][.精度]指示符
    若想输出'%'本身时, 请使用'%%'处理。
    1. 处理字符方向。负号时表示从后向前处理。
    2. 填空字元。 0 的话表示空格填 0;空格是内定值,表示空格就放着。
    3. 字符总宽度。为最小宽度。
    4. 精确度。指在小数点后的浮点数位数。

    转换字符

    %% 印出百分比符号,不转换。
    %c 整数转成对应的 ASCII 字元。
    %d 整数转成十进位。
    %f 倍精确度数字转成浮点数。
    %o 整数转成八进位。
    %s 整数转成字符串。
    %x 整数转成小写十六进位。
    %X 整数转成大写十六进位。
    $money = 123.1
    $formatted = sprintf ("%06.2f", $money); // 此时变数 $ formatted 值为 "123.10"
    $formatted = sprintf ("%08.2f", $money); // 此时变数 $ formatted 值为 "00123.10"
    $formatted = sprintf ("%-08.2f", $money); // 此时变数 $ formatted 值为 "123.1000"
    $formatted = sprintf ("%.2f%%", 0.95 * 100); // 格式化为百分比
    %08.2f 解释:
    %开始符
    0是 "填空字元" 表示,如果长度不足时就用0来填满。
    8格式化后总长度
    2f小数位长度,即2位
    第3行值为"00123.10" 解释:
    因为2f是(2位)+小数点符号(1位)+前面123(3位)=6位,总长度为8位,故前面用[填空字元]0表示,即00123.10
    第4行值为"123.1000" 解释:
    -号为反向操作,然后填空字元0添加在最后面了
    在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望。由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf 比printf 有用得多。
    sprintf 是个变参函数,定义如下:
    int sprintf( char *buffer, const char *format [, argument] ... );
    除了前两个参数类型固定外,后面可以接任意多个参数。而它的精华,显然就在第二个参数:
    格式化字符串上。
    printf 和sprintf 都使用格式化字符串来指定串的格式,在格式串内部使用一些以“%”开头的格式说明符(format specifications)来占据一个位置,在后边的变参列表中提供相应的变量,最终函数就会用相应位置的变量来替代那个说明符,产生一个调用者想要的字符串。

    格式化数字字符串

    sprintf 最常见的应用之一莫过于把整数打印到字符串中,所以,sprintf 在大多数场合可以替代
    itoa。
    如:
    //把整数123 打印成一个字符串保存在s 中。
    sprintf(s, "%d", 123); //产生"123"
    可以指定宽度,不足的左边补空格:
    sprintf(s, "%4d%4d", 123, 4567); //产生:" 1234567"
    当然也可以左对齐:
    sprintf(s, "%-4d%4d", 123, 4567); //产生:"123 4567"
  • 相关阅读:
    个人总结
    找水王
    nabcd需求分析
    四则运算最终篇-网页版四则运算
    第一次冲刺--个人工作总结02
    第一次冲刺--个人工作总结01
    组队APP功能点定点NABCD分析
    水王
    软件工程结对作业01
    个人工作总结06
  • 原文地址:https://www.cnblogs.com/xiamibk/p/4146440.html
Copyright © 2020-2023  润新知