几个常用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

int main()

{

  int a = 1;

  char s[64];

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

  printf("%s\n",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

转载于:https://www.cnblogs.com/honglihua8688/p/3686158.html

你可能感兴趣的:(几个常用I/O函数用法(printf,fprintf等))