Qt/C++如何定位在文件的中间(偏移)->唯一知道的是文件大小

发布于 2024-11-29 00:56:00 字数 520 浏览 0 评论 0原文

大家好,在 Qt 中我有:

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)。基于该偏移量,我想获得该位置。

基本上;

  • 根据给定的字节(例如:fileSize/2)从文件中获取偏移量
  • 基于该偏移量的位置是什么(行索引)

是否可以使用类似的东西来确定位置? int centerPos = ftell(偏移中间, pInFile);

我认为我走的路不对,你能给我一些建议吗?

谢谢

并且最好定位在该位置的开头

Hy all, in Qt i have:

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)

Instead of reading trough the whole file (fgets) in a loop, i want to know the offset of the middle of the file. And based on that offset i want to get that position.

Basically;

  • get offset from a file based on my given bytes (example: fileSize/2)
  • based on that offset what is the position (row index)

Is it possible to have something like this for determining position?
int centerPos = ftell(Offset middle, pInFile);

I don't think i'm on the right path here, can u give some advice?

Thx

ps.

And would be nice to position on the the beginning of the position

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

滴情不沾 2024-12-06 00:56:00

使用 QFile 而不是原始文件指针。它有一个 seek 方法。

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

您可以使用...确定文件的中间位置

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

,然后,如上所述,在调用后从该位置开始读取

myfile.seek(middle).

Use QFile instead of a raw file pointer. It has a seek method.

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

You can determine the middle of the file using

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

...then, as mentioned, start reading at that position after calling

myfile.seek(middle).
谈情不如逗狗 2024-12-06 00:56:00
  • 以附加模式打开文件。
  • 执行ftell()来知道文件的结束位置。
  • 通过将步骤 2 减半来计算文件的中间部分,并将其存储在名为 middle 的变量中。
  • 然后定义以下函数

    void middle_fseek(FP* FilePointer, int offset)

    {

    fseek(FilePointer, middle+ offset, SEEK_SET);

    }

  • Open the file in append mode.
  • do ftell() to know the end position of file.
  • Calculate middle of file by halving step 2, and store it in a variable named middle.
  • Then define the following function

    void middle_fseek(FP* FilePointer, int offset)

    {

    fseek(FilePointer, middle+ offset, SEEK_SET);

    }

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文