fread函數詳解


函數原型:
size_t   fread(   void   *buffer,   size_t   size,   size_t   count,   FILE   *stream   ) 
  buffer   是讀取的數據存放的內存的指針(可以是數組,也可以是新開辟的空間,buffer就是一個索引)   
    size       是每次讀取的字節數  
  count     是讀取次數  
  strean   是要讀取的文件的指針  

  例如   從文件fp里讀取100個字節   可用以下語句  
   
  fread(buffer,100,1,fp)  
  fread(buffer,50,2,fp)  
  fread(buffer,1,100,fp)   
**************************************************************************************    
對讀出的二進制流是不能用strlen()或者sizeof()求其長度和大小的。
**************************************************************************************

fread可以讀二進制文件,有時用字符方式去讀文件不能讀完整個文件,但是二進制方式就可以 。
這就是因為字符方式用特定的標記結尾的,讀取時只要碰到該標記就自動結束

函數fread()讀取[num]個對象(每個對象大小為size(大小)指定的字節數),並把它們替換到由buffer(緩沖區)指定的數組. 數據來自給出的輸入流. 函數的返回值是讀取的內容數量...

使用feof()或ferror()判斷到底發生哪個錯誤. 

上一段代碼:

void HelpMassage()
{
	FILE *fp;
	int size = 0;
	char *ar ;

	//二進制方式打開文件
	fp = fopen("lining.txt","rb");
	if(NULL == fp)
	{
		printf("Error:Open input.c file fail!\n");
		return;
	}

	//求得文件的大小
	fseek(fp, 0, SEEK_END);
	size = ftell(fp);
	rewind(fp);

	//申請一塊能裝下整個文件的空間
	ar = (char*)malloc(sizeof(char)*size);

	//讀文件
	fread(ar,1,size,fp);//每次讀一個,共讀size次

	printf("%s",ar);
	fclose(fp);
	free(ar);

	printf("按任意鍵繼續");
	getchar();
	getchar();
}



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM