【发布时间】:2012-07-03 14:56:28
【问题描述】:
我使用如下代码片段来获取文本文件的内容。然而,最后的缓冲区buff 在一个地方只有数字 8,没有别的。正在打开的文件的唯一内容是“项目”一词。我如何处理(即打印)我应该收到的内容或结果?以下代码有什么问题:
TCHAR buff[20];
DWORD dwNumRead;
CString finalPath = path + L"\\" + fileName.c_str();
HANDLE hfile=CreateFile(finalPath ,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if(ReadFile(hfile,buff,20,&dwNumRead,NULL))
{
CString temp;
temp.Format(L"%s",&buff[0]);
ATLTRACE(L"Success %s", temp);
}
CloseHandle(hfile);
【问题讨论】:
-
您是使用 Unicode 还是多字节字符集进行编译?如果您使用
L"%s"编译多字节和格式,那么第一个字符将有一个尾随0,这将被视为多字节字符中的终止空值。
标签: c++ windows file buffer readfile