#include <windows.h>
#include <stdio.h>
#define BUFFER_SIZE 1024
HANDLE openFile(const char* filename) {
HANDLE hFile = CreateFileA(
filename,
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL
);
if (hFile == INVALID_HANDLE_VALUE) {
DWORD err = GetLastError();
printf("Failed to open file. Error code: %lu\n", err);
}
return hFile;
}
BOOL readFileData(HANDLE hFile, char* buffer, DWORD* bytesRead) {
BOOL success = ReadFile(
hFile,
buffer,
BUFFER_SIZE - 1,
bytesRead,
NULL
);
if (!success) {
DWORD err = GetLastError();
printf("Failed to read file. Error code: %lu\n", err);
}
return success;
}
void printBuffer(const char* buffer, DWORD bytesRead) {
printf("Read %lu bytes from file:\n", bytesRead);
printf("%s\n", buffer);
}
int main(void) {
DWORD bytesRead;
char buffer[BUFFER_SIZE];
HANDLE hFile = openFile("data.txt");
if (hFile == INVALID_HANDLE_VALUE) {
return 1;
}
if (!readFileData(hFile, buffer, &bytesRead)) {
CloseHandle(hFile);
return 1;
}
buffer[bytesRead] = '\0';
printBuffer(buffer, bytesRead);
CloseHandle(hFile);
return 0;
}
/*
run:
Read 13 bytes from file:
abcd
efg
hi
*/