表头文件 #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数目。