在C++中,fseek
函數用于在文件中定位指針的位置。fseek
函數有兩種模式:相對移動和絕對移動。
相對移動:相對移動是指根據當前位置來移動文件指針。相對移動模式有三種:SEEK_CUR
、SEEK_SET
、SEEK_END
。
SEEK_CUR
:從當前位置開始移動。如果offset
為正數,則向文件末尾移動;如果offset
為負數,則向文件開始移動。SEEK_SET
:從文件起始位置開始移動。如果offset
為正數,則移動到文件指定位置;如果offset
為負數,則移動到文件開始位置。SEEK_END
:從文件末尾開始移動。如果offset
為正數,則向文件末尾移動;如果offset
為負數,則向文件開始移動。絕對移動:絕對移動是指直接移動文件指針到指定的位置。在絕對移動模式下,offset
表示文件指針要移動到的位置。
示例代碼:
#include <iostream>
#include <cstdio>
int main() {
FILE *fp = fopen("test.txt", "r");
if (fp == NULL) {
std::cout << "Error opening file\n";
return 1;
}
// 相對移動
fseek(fp, 10, SEEK_SET); // 從文件起始位置移動到第10個字節處
fseek(fp, -5, SEEK_CUR); // 從當前位置向前移動5個字節
fseek(fp, 0, SEEK_END); // 移動到文件末尾
// 絕對移動
fseek(fp, 20, SEEK_SET); // 移動文件指針到第20個字節處
fclose(fp);
return 0;
}
在上面的示例中,我們展示了如何使用fseek
函數在文件中進行相對移動和絕對移動。根據不同的SEEK_
模式,我們可以靈活地控制文件指針的移動操作。