2011-08-12 21 views
1

海蘭所有,Qt中我有:QT/C++如何在文件的中間位置(偏移量) - >唯一已知的是文件大小

FILE *pInFile = fopen(strFileName.toLatin1().constData(), "r"); 
QFileInfo fi(strFileName); 
qint64 fileSize = fi.size(); 

//GO TO THE MIDDLE 
//WHAT IS THE POSITION OF THE MIDDLE (INTEGER) 

代替讀槽在整個文件(與fgets)一個循環,我想知道文件中間的偏移量。基於這個抵消,我想得到那個位置。

基本上;

  • 獲得基於我給個字節的文件偏移(例如:文件大小/ 2)
  • 基於該偏移是什麼位置(行索引)

是否有可能有一些像這樣來確定位置? int centerPos = ftell(Offset middle,pInFile);

我不認爲我在這裏正確的道路上,你能給我一些建議嗎?

Thx

ps。

而且將是很好的位置

回答

3

使用QFile,而不是原始文件指針。它有一個seek方法。

http://doc.qt.nokia.com/latest/qfile.html#seek

可以使用確定文件的中間

QFile myfile("filename"); 
int middle = myfile.size() /2; 

...那麼,如前所述,開始打電話

myfile.seek(middle). 
後在該位置讀
1
  • 打開追加模式的文件的起始位置。
  • ftell()知道文件的結束位置。
  • 通過減半步驟2來計算文件的中間值,並將其存儲在名爲middle的變量中。
  • 然後定義下面的函數

    空隙middle_fseek(FP *一名爲FilePointer,詮釋偏移)

    {

    FSEEK(一名爲FilePointer,中間+偏移,SEEK_SET);

    }

相關問題