我试图通过创建文件然后写入数据来将文本数据(Unicode)写入文本文件。我在 Windows 98(虚拟机)上使用 Visual Studio 6.0。
问题是函数
CreateFile
会产生数字“6”的错误,这意味着 ERROR_INVALID_HANDLE
。
const wchar_t str[] = L"Hello World!";
// I have used "C:\\file.txt" and "C:\file.txt" too
HANDLE hFile = CreateFile(TEXT("C:\\file.txt"), GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if(hFile == INVALID_HANDLE_VALUE){
MessageBox(NULL, L"Error, Creating a file.", L"A Message", MB_OK);
return 0;
}
if(WriteFile(hFile, str, sizeof(str), 0, 0)){
MessageBox(NULL, L"The string has been written successfully", L"A Message", MB_OK);
} else {
wchar_t buff[10];
swprintf(buff, L"%d", GetLastError());
MessageBox(NULL, buff, L"A Message", MB_OK);
}
closeHandle(hFile);
注意该功能在现代操作系统上运行良好,但不知道为什么在win9x系统上会出现这个问题。
CreateFile(A/W) 在 Windows 98 上不起作用,因为根据 MSDN 上的描述,最低客户端是 Windows XP。例如,也许您应该尝试使用 C“fopen”函数?