使用fwrite,fread需要注意的问题

表头文件  #include<stdio.h>

fwrite(将数据写至文件流)
定义函数  size_t fwrite(const void * ptr,size_t size,size_t nmemb,FILE * stream);

函数说明  fwrite()用来将数据写入文件流中。参数stream为已打开的文件指针,参数ptr 指向欲写入的数据地址,总共写入的字符数以参数size*nmemb来决定。Fwrite()会返回实际写入的nmemb数目。
 返回值  返回实际写入的nmemb数目。

int iWrite = fwrite(ptr,sizeof(int),4,file); //返回4,即写入4个int长度的数据
int iWrite = fwrite(ptr,1,4,file);//返回4,即写入4个字节的数据
int iWrite = fwrite(ptr,4,1,file);//返回1,即写入1个长度为4的数据
int iWrite = fwrite(ptr,4,2,file);//返回2,即写入2个长度为4的数据


按fwrite的语义,不是说你一次写多少数据就能全部写入的,因为缓存有限的说,并且不同的OS缓存大小可能还不一样。正确的写法:

int   nTotalWritedBytes   =   0;  
int   nCurWritedBytes   =   0;   
while(nTotalWritedBytes   <   nBitsSize)  
{  

     //返回实际写入的数据数目
     nCurWritedBytes = fwrite(pBytes+nTotalWritedBytes, 1, nBitsSize-nTotalWritedBytes, fp);   
     if(nCurWritedBytes   <   0)   
     {  
     return   FWRITE_FAILURE;   //出错
   }   
     nTotalWritedBytes   +=   nCurWritedBytes;   //实际写入的数据量
}

 

fread(从文件流读取数据)  
定义函数  size_t fread(void * ptr,size_t size,size_t nmemb,FILE * stream);

函数说明  fread()用来从文件流中读取数据。参数stream为已打开的文件指针,参数ptr 指向欲存放读取进来的数据空间,读取的字符数以参数size*nmemb来决定。Fread()会返回实际读取到的nmemb数目,如果此值比参数nmemb 来得小,则代表可能读到了文件尾或有错误发生,这时必须用feof()或ferror()来决定发生什么情况。
 返回值  返回实际读取到的nmemb数目。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值