| 
              【示例程序】#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;
 }
 
 |