C 檔案流處理

2021-08-22 19:24:46 字數 1007 閱讀 9818

包含於#include的file 類:fread和feof

// 讀取檔案塊資料

size_t fread(void *buffer, size_t size, size_t count, file *file);

//判斷上次讀操作是否遇到檔案末尾

int feof(file *stream);

feof返回0表示檔案沒有結束,返回1,表示結束。

feof實際觀察的是上次讀操作的內容,也就是上次讀操作fread返回的值,如果讀操作的返回值表明讀取的不是空,那feof就返回0,如果上次讀操作失敗了,則feof返回1,表示讀取完了。

在vc裡,只有當檔案位置指標(fp->_ptr)到了檔案末尾,然後再發生讀/寫操作時,標誌位(fp->_flag)才會被置為含有_ioeof。然後再呼叫feof(),才會得到檔案結束的資訊。注意這裡feof判斷的是上一次讀操作移動的file指標是否遇到檔案末尾,因此,如果執行如下程式:

char c;

while(!feof(fp))

會發現多輸出了乙個ff,原因就是在讀完最後乙個字元後,fp->flag仍然沒有被置為_ioeof,因而feof()仍然沒有探測到檔案結尾。直到再次呼叫fgetc()執行讀操作,feof()才能探測到檔案結尾。這樣就多輸出了乙個-1(即ff)。正確的寫法應該是:

char c;

c = fgetc(fp);

while(!feof(fp))

uint nsize = 0;

uint nsend = 0;

char *szbuff = null;

//傳送

while (nsize < findfiledata.nfilesizelow)

file.close();

delete szbuff;

沒有判斷檔案結尾標誌而是判斷已讀大小。

C 學習筆記 使用流處理檔案

visual studio使用流處理資料檔案。設計流的目的是把一系列位元組從乙個位置傳輸到另乙個位置。流和其他物件一樣,具有方法和屬性。流物件位於system.io命名空間中。在c 中讀寫少量資料時,最簡單的方法是使用streamreader和streamwriter物件。一 將資料寫入檔案的步驟 ...

C 檔案流類與檔案流物件

檔案流是以外存檔案為輸入輸出物件的資料流。輸出檔案流是從記憶體流向外存檔案的資料,輸入檔案流是從外存檔案流向記憶體的資料。每乙個檔案流都有乙個記憶體緩衝區與之對應。請區分檔案流與檔案的概念,不用誤以為檔案流是由若干個檔案組成的流。檔案流本身不是檔案,而只是以檔案為輸入輸出物件的流。若要對磁碟檔案輸入...

C 檔案流操作

include stdafx.h include include include include include using namespace std void writecharsettofile const string filename void outputfile const strin...