Win32API ファイルをシークする SetFilePointer
SetFilePointerでファイルをシークする
使用するAPI
#include <windows.h> int main() { HANDLE hFile; BOOL bRet; int i; int n; DWORD dwNumberOfReadBytes; char *lpFileName = "test.txt"; //ファイルを開く hFile = CreateFile(lpFileName, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (hFile == INVALID_HANDLE_VALUE) { return 1; } for (i = 0; i < 10; i++) { //ファイルに整数を書き込む bRet = WriteFile(hFile, &i, sizeof(i), &dwNumberOfReadBytes, NULL); if (!bRet) { goto Exit; } } //先頭からsizeof(n)*5 = 20バイト目の位置に //ファイルポインタを移動(シーク)する SetFilePointer(hFile, sizeof(n)*5, NULL, FILE_BEGIN); while (1) { //整数を読み込む bRet = ReadFile(hFile, &n, sizeof(n), &dwNumberOfReadBytes, NULL); if (!bRet || dwNumberOfReadBytes == 0) { goto Exit; } printf("n = %d\n", n); } Exit: //ファイルを閉じる CloseHandle(hFile); return 0; }