我寫道,列出我的文件,它的二進制文件,並將其與fwrite的FUNC從我的結構寫一個函數:爲什麼fseek不起作用?
void ReadFile::printList(){
clearerr(bookFilePtr);
fseek(bookFilePtr,0L,SEEK_SET); // set to begin of file
int counter = 1;
cout << "***************************************************" << endl;
struct book tmp ;
while (!feof(bookFilePtr)){
fread(bookPtrObj,sizeof(struct book),1,bookFilePtr);
cout << bookPtrObj->name << "s1"<< endl;
cout << bookPtrObj->publisher << "s2"<< endl;
cout << bookPtrObj->author << "s3" <<endl;
cout << bookPtrObj->stock << endl;
cout << bookPtrObj->translation << endl;
cout << bookPtrObj->trasnlator << "s4" <<endl;
cout << bookPtrObj->delayDays << endl;
cout << bookPtrObj->delayPay << endl;
cout << "***************************************************" << endl;
fseek(bookFilePtr,counter * sizeof(struct book) ,SEEK_SET); // seek to next data
counter ++;
}
它打印一次我所有的文件,但並沒有從我的循環退出。我的func繼續打印文件中的最後一個數據。我該如何退出我的func並找出文件結尾? fseek工作嗎?
你爲什麼還要打擾?無論如何,您已經通過(最多)sizeof(struct book)字節移動了文件指針。無論如何,你實際上應該在每次通話時檢查fread的結果,但這是另一回事。 – 2011-12-17 09:45:47