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 次