【示例程序】 #include <strsafe.h> #include <Windows.h>
void print(LPCSTR str) { WriteConsoleA(GetStdHandle(STD_OUTPUT_HANDLE), str, lstrlenA(str), NULL, NULL); }
void uprint(LPCTSTR str) { WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE), str, lstrlen(str), NULL, NULL); }
int main(void) { DWORD dwNum, dwSize; HANDLE hFile, hHeap; LPSTR lpData; TCHAR str[100];
hFile = CreateFile(TEXT("file.txt"), GENERIC_READ | GENERIC_WRITE, (DWORD)NULL, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); // 使用ab+方式打开文件, 但不把指针移到文件末尾 if (hFile == INVALID_HANDLE_VALUE) { uprint(TEXT("无法打开文件\n")); return 1; }
dwSize = GetFileSize(hFile, NULL); StringCbPrintf(str, sizeof(str), TEXT("文件大小: %d字节\n"), dwSize); // 相当于sprintf uprint(str);
uprint(TEXT("文件内容: \n")); hHeap = GetProcessHeap(); lpData = (LPSTR)HeapAlloc(hHeap, (DWORD)NULL, dwSize + 1); // 相当于malloc if (lpData != NULL) { ReadFile(hFile, lpData, dwSize, &dwNum, NULL); // 相当于fread, 但是第4个参数不能为NULL *(lpData + dwSize) = '\0'; print(lpData); HeapFree(hHeap, (DWORD)NULL, lpData); // 相当于free } else uprint(TEXT("读取失败, 内存不足! \n"));
WriteFile(hFile, "New Content\r\n", 13, &dwNum, NULL); // 相当于fwrite, 但是第4个参数不能为NULL
CloseHandle(hFile); // 相当于fclose return 0; }
|