0から始めるVisualStudio2022:ソフト開発塾

C++の空のプロジェクトを選んで
『プロジェクト』『新しい項目の追加』で、
sample002a.cppを作成します。
#include 
#include 
int main() {
//	HANDLE CreateFileA(
//		[in]           LPCSTR                lpFileName,
//		[in]           DWORD                 dwDesiredAccess,
//		[in]           DWORD                 dwShareMode,
//		[in, optional] LPSECURITY_ATTRIBUTES lpSecurityAttributes,
//		[in]           DWORD                 dwCreationDisposition,
//		[in]           DWORD                 dwFlagsAndAttributes,
//		[in, optional] HANDLE                hTemplateFile
//	);
	HANDLE mm_fd;
	mm_fd = CreateFileA(
		"sample002a.cpp",	// [in]           LPCSTR                lpFileName,
		GENERIC_READ,		// [in]           DWORD                 dwDesiredAccess,
		0,			// [in]           DWORD                 dwShareMode,
		NULL,			// [in, optional] LPSECURITY_ATTRIBUTES lpSecurityAttributes,
		OPEN_EXISTING,		// [in]           DWORD                 dwCreationDisposition,
		FILE_ATTRIBUTE_NORMAL,	// [in]           DWORD                 dwFlagsAndAttributes,
		NULL);			// [in, optional] HANDLE                hTemplateFile
	if (mm_fd == INVALID_HANDLE_VALUE) {
//		std::cout << "Error : File Open\n";
		printf("Error : File Open\n");
		return 1;
	}else{
//		BOOL ReadFile(
//			[in]                HANDLE       hFile,
//			[out]               LPVOID       lpBuffer,
//			[in]                DWORD        nNumberOfBytesToRead,
//			[out, optional]     LPDWORD      lpNumberOfBytesRead,
//			[in, out, optional] LPOVERLAPPED lpOverlapped
//		);
//		int	mm_leng;
		DWORD	mm_leng;
		unsigned char mm_read_buff[48][16];
		ReadFile(
			mm_fd,			// [in]                HANDLE       hFile,
			mm_read_buff,		// [out]               LPVOID       lpBuffer,
			sizeof(mm_read_buff),	// [in]                DWORD        nNumberOfBytesToRead,
			&mm_leng,		// [out, optional]     LPDWORD      lpNumberOfBytesRead,
			NULL);			// [in, out, optional] LPOVERLAPPED lpOverlapped
		char mm_output_buff[16 + 16 * 3 + 16 + 7];
//		mm_leng = fread(mm_read_buff, 1, sizeof(mm_read_buff), fp);
		mm_output_buff[16] = ' ';
		mm_output_buff[17] = '|';
		mm_output_buff[18] = ' ';
		int y = 0;
		int j = 16;
		for (int i = 0; i < mm_leng; i += 16) {
			char* ptr = mm_output_buff + 19;
			for (j = 0; j < 16; j++) {
				if (y * 16 + j >= mm_leng)	break;
				unsigned short ch = (unsigned short)mm_read_buff[y][j];
				if (ch > 0x7e || ch < 0x20) {
					mm_output_buff[j] = '.';
				}
				else {
					mm_output_buff[j] = (char)ch;
				}
				sprintf(ptr, "%02x ", ch);
				ptr += 3;
			}
			printf("%4x %s\n", y, mm_output_buff);
			y++;
		}
		if (j < 16) {
			for (; j < 16; j++) {
				mm_output_buff[j] = ' ';
			}
			printf("%4x %s\n", y, mm_output_buff);
		}
		CloseHandle(mm_fd);
//		fclose(fp);
	}
}








Top