sprintf 的用法

    技术2022-05-11  50

    sprintf 将字串格式化。

      在头文件 #include<stdio.h>中

      语法: string sprintf(string format, mixed [args]...);

      传回值: 字串

      1. 处理字符方向。-负号时表时从后向前处理。

      2. 填空字元。 0 的话表示空格填 0;空格是内定值,表示空格就放着。

      3. 字符总宽度。为最小宽度。

      4. 精确度。指在小数点后的浮点数位数。

      =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

      转换字符

      =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

      % 印出百分比符号,不转换。

      b 整数转成二进位。

      c 整数转成对应的 ASCII 字元。

      d 整数转成十进位。

      f 倍精确度数字转成浮点数。

      o 整数转成八进位。

      s 整数转成字串。

      x 整数转成小写十六进位。

      X 整数转成大写十六进位。

     

      =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

      <?

      $money = 123.1

      $formatted = sprintf (".2f", $money); // 此时变数 $ formatted 值为 "123.10"

      $formatted = sprintf (".2f", $money); // 此时变数 $ formatted 值为 "00123.10"

      $formatted = sprintf ("%-08.2f", $money); // 此时变数 $ formatted 值为 "123.1000"

      $formatted = sprintf ("%.2f%%", 0.95 * 100); // 格式化为百分比

      ?>

      ¢.2f 解释:

      %开始符

      0是 "填空字元" 表示,如果长度不足时就用0来填满。

      6格式化后总长度

      2f小数位长度,即2位

      ¢第4行值为"00123.10" 解释:

      因为2f是(2位)+小数点符号(1)+前面123(3位)=6位,总长度为8位,故前面用[填空字元]0表示,即00123.10

      ¢第4行值为"-123.1000" 解释:

      -号为反向操作,然后填空字元0添加在最后面了

     

      /********************************************************

      以下选自《 社区电子杂志——C/C++杂志》

      *********************************************************/

      在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望。由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf 比printf 有用得多。

      sprintf 是个变参函数,定义如下:

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

      除了前两个参数类型固定外,后面可以接任意多个参数。而它的精华,显然就在第二个参数:

      格式化字符串上。

      printf 和sprintf 都使用格式化字符串来指定串的格式,在格式串内部使用一些以“%”开头的格式说明符(format specifications)来占据一个位置,在后边的变参列表中提供相应的变量,最终函数就会用相应位置的变量来替代那个说明符,产生一个调用者想要的字符串。

      格式化数字字符串

      sprintf 最常见的应用之一莫过于把整数打印到字符串中,所以,spritnf 在大多数场合可以替代

      itoa。

      如:

      //把整数123 打印成一个字符串保存在s 中。

      sprintf(s, "%d", 123); //产生"123"

      可以指定宽度,不足的左边补空格:

      sprintf(s, "

    转载请注明原文地址: https://ibbs.8miu.com/read-700310.html

    最新回复(0)