SetFilePointer

SetFilePointerで、指定の位置にファイルポインタをセットする。

SetFilePointer 関数 (fileapi.h) - Win32 apps | Microsoft Learn

まず、SetFilePointer.cppを、

// ヘッダファイルのインクルード
#include <windows.h>	// 標準WindowsAPI
#include <tchar.h>		// TCHAR型
#include <stdio.h>		// 標準入出力

// _tmain関数の定義
int _tmain(int argc, TCHAR *argv[]){	// main関数のTCHAR版.

	// 変数の宣言
	HANDLE hFile;		// HANDLE型ファイルハンドルhFile
	BYTE btBuf[16];		// BYTE型配列btBuf(長さ16)
	DWORD dwReadBytes;	// DWORD型読み込んだバイト数dwReadBytes.
	
	// ファイルを開く
	hFile = CreateFile(_T("test.txt"), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);	// CreateFileで"test.txt"を開いて, 取得したハンドルをhFileに格納.
	if (hFile == INVALID_HANDLE_VALUE){	// hFileがINVALID_HANDLE_VALUEなら.

		// エラー処理
		_tprintf(_T("CreateFile Error!\n"));	// _tprintfで"CreateFile Error!"と出力.
		return -1;	// -1を返す.

	}
	
	// 1文字読み込む.
	ReadFile(hFile, btBuf, 1, &dwReadBytes, NULL);	// ReadFileでhFileの内容をbtBufに1文字読み込む.
	btBuf[dwReadBytes] = 0x0;	// 末尾を'\0'( = 0x0)で埋める.
	
	// btBufを出力.
	printf("btBuf = %s\n", btBuf);	// printfでbtBufの内容を出力.

	// 閉じる.
	CloseHandle(hFile);	// CloseHandleでhFileを閉じる.
	
	// プログラムの終了.
	return 0;

}

こうした場合、test.txtが、

このようなファイルの時、
このようなファイルの時、

このようなファイルの時、

先頭だからA
先頭だからA

先頭だからA。
しかし、

こうすると、

2バイト先なのでC。
2バイト先なのでC。

2バイト先なのでC。

Sample/winapi/SetFilePointer/SetFilePointer/src/SetFilePointer at master · bg1bgst333/Sample · GitHub