zoukankan      html  css  js  c++  java
  • 几个常用I/O函数用法(printf,fprintf等)

    一 格式化输出

    1.printf

    定义:int printf(const char *format,[argument]);

    功能:产生格式化输出的函数(定义在 stdio.h 中)

    参数说明:format是参数要输出的格式,输出的格式定义为:%[flags][width][.perc][F|N|h|l]type

    flags规定输出格式,取值和含义如下:

      无       右对齐,左边填充0和空格

      -        左对齐,右边填充空格

      +        在数字前增加符号 + 或 -

      0        将输出的前面补上0,直到占满指定列宽为止(不可以搭配使用-)

      空格     输出值为正时冠以空格,为负时冠以负号

      # 当type=c,s,d,i,u时没有影响

      type=o,x,X时,分别在数值前增加'0',"0x","0X"

      type=e,E,f时,总是使用小数点

      type=g,G时,除了数值为0外总是显示小数点

      

    type含义如下:

      d 有符号10进制整数

      i 有符号10进制整数

      o 无符号8进制整数

      u 无符号10进制整数

      x 无符号的16进制数字,并以小写abcdef表示

      X 无符号的16进制数字,并以大写ABCDEF表示

      f 浮点数

      E/e 用科学表示格式的浮点数

      g 使用%f和%e表示中的总的位数表示最短的来表示浮点数 G 同g格式,但表示为指数

      c 单个字符

      s 字符串

      S wchar_t字符(宽字符)类型字符串

      % 显示百分号本身

      p 显示一个指针,near指针表示为:XXXX

      far 指针表示为:XXXX:YYYY

      n 相连参量应是一个指针,其中存放已写字符的个数

    width 用于控制显示数值的宽度,取值和含义如下

    n(n=1,2,3...) 宽度至少为n位,不够以空格填充

    0n(n=1,2,3...) 宽度至少为n位,不够左边以0填充

    * 格式列表中,下一个参数还是width

    prec 用于控制小数点后面的位数,取值和含义如下:

      无   按缺省精度显示

      0    当type=d,i,o,u,x时,没有影响

      type=e,E,f时,不显示小数点

      n(n=1,2,3...) 当type=e,E,f时表示的最大小数位数

      type=其他,表示显示的最大宽度

    F|N|h|l 表示指针是否是远指针或整数是否是长整数

      F 远指针

      n 近指针

      h 短整数或单精度浮点数

      l 长整数或双精度浮点数

    2. sprintf

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

    功能:把格式化的数据写入某个字符串(定义在stdio.h中)

    返回值:字符串长度(strlen)

    参数说明:

    buffer,是格式化的数据要写入的字符串

    format是参数要输出的格式,跟sprintf中的参数format的格式是一样的

    补充说明:由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf 比printf 有用得多。sprintf 最常见的应用之一是把整数打印到字符串中,以实现整数到字符串的转换。

    实例:

    #include <stdio.h>

    int main()

    {

      int a = 1;

      char s[64];

      sprintf(s,"change int 1 to string %d",a);

      printf("%s ",s);

      return 0;

    }

    3. sprintf_s

    定义:int sprintf_s(char *buffer,size_t sizeOfBuffer,const char *format [,argument] ... );

    功能:sprintf_s()是sprintf()的安全版本,通过指定缓冲区长度来避免sprintf()存在的溢出风险

    参数说明:参考sprintf()函数的参数说明

    补充说明:在使用VS2008时如果你使用了sprintf函数,那么编译器会发出警告:使用sprintf存在风险,建议使用sprintf_s

    4. fprintf

    定义: int fprintf( FILE *stream, const char *format, ... );

    功能:根据指定的format(格式)(格式)发送信息(参数)到由stream(流)指定的文件中

    返回值:若成功则返回输出字符数,若输出出错则返回负值。

    参数说明:

    stream,就是输出信息要输出到的文件流

    format是参数要输出的格式

    补充说明:在使用VS2008时如果你使用了sprintf函数,那么编译器会发出警告:使用sprintf存在风险,建议使用sprintf_s

  • 相关阅读:
    git 学习网站
    Vue 部署在 IIS 上
    Element UI 的坑
    Vue 中 Prop 传至的 一个Bug
    Asp.net Core 部署在 IIS上
    今天用UniApp开发, 用到 Vuex 中的 mutations, 设置值的时候好像只能传2个参数, 第一个是固定的state, 第二个是一个值, 不能传第三个了
    anxios 和 uni.request 访问Asp.net 服务器传参出错的坑
    内网计算机设置问题说明
    关于综合布线
    Android学习 -- Activity 以及Activity之间值传递
  • 原文地址:https://www.cnblogs.com/honglihua8688/p/3686158.html
Copyright © 2011-2022 走看看