【转载】fwrite与fprintf的区别

fwrite是向流中写入数据,而fprintf是向流中写入格式数据。两者的共同点为向流中写入数据,至于区别可以看看两者的申明:

  1. size_t fwrite(  
  2.    const void *buffer,  
  3.    size_t size,  
  4.    size_t count,  
  5.    FILE *stream   
  6. );  
  7. int fprintf(   
  8.    FILE *stream,  
  9.    const char *format [,  
  10.    argument ]...  
  11. );  

 

前者fwrite写入流stream中的数据是buffer指定的内容,内容的字节大小分别由size和count两个参数来指定,因此写入流stream中的内容有可能是乱码,但是有效的数据。
后者fprintf写入流stream中的数据则由argument来指定,并且这些argument的内容分别由format指定的格式来显示,因此写入stream的内容通常来说是文本字符流,当然,也允许写入格式乱码。
两者都可以将文本写入流stream中。比如:
fwrite("Hello world!", 1, 12, fp);

fprintf(fp, "%s", "Hello world!");
等价。

 

 

二、fprintf用法

实例1:

  1. #include <stdio.h>  
  2. #include <process.h>  
  3. FILE *stream;  
  4. int main( void )  
  5. {  
  6.      int i = 10;  
  7.      double fp = 1.5;  
  8.      char s[] = "this is a string";  
  9.      char c = '\n';  
  10.      stream = fopen( "fprintf.out""w" );  
  11.      fprintf( stream, "%s%c", s, c );  
  12.      fprintf( stream, "%d\n", i );  
  13.      fprintf( stream, "%f\n", fp );  
  14.      fclose( stream );  
  15.      system( "type fprintf.out" );  
  16. }  
  17.  

 

屏幕输出:

     this is a string

     10

     1.500000

 

实例2

 

  1. #include <stdio.h>  
  2. int main()  
  3. {  
  4.      FILE *fp;  
  5.      int i=617;  
  6.      char* s = "that is a good new";  
  7.      fp = fopen("text.dat","w");  
  8.      fputs("total",fp);  
  9.      fputs(":",fp);  
  10.      fprintf(fp,"%d\n",i);  
  11.      fprintf(fp,"%s",s);  
  12.      fclose(fp);  
  13.      return 0;  
  14. }  

 

屏幕输出:

      total:617

      that is a good new

 

      格式化规定符

      %d 十进制有符号整数

      %u 十进制无符号整数

      %f 浮点数 %s 字符串

      %c 单个字符

      %p指针的值

      %e 指数形式的浮点数

      %x, %X 无符号以十六进制表示的整数

      %o 无符号以八进制表示的整数

      %g 自动选择合适的表示法

 

参考:

http://blog.csdn.net/djh512/article/details/6021226

http://baike.baidu.com/view/656682.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值