c语言调用Win32API,ReadFile问题

来源:百度知道 编辑:UC知道 时间:2024/05/29 21:58:36
hResult=CreateFile(_T(".\\a.htm"),GENERIC_READ,FILE_SHARE_READ,0,OPEN_EXISTING,0,0);
if(hResult<0 )
{
printf("文件打开失败!");
return -1;
}
else
{
ReadFile(hResult,&ch[0],1,&dwReadSize,NULL);
printf("%d %c",dwReadSize,*ch);

if(*ch==EOF)
{
printf("该文件为空。");
return -1;
}
while(*ch!=EOF)
ReadFile(hResult,&ch[0],1,&dwReadSize,NULL);//之后对ch中的内容进行处理
}
CloseHandle(hResult);

能这样将文件里的信息一位一位的读到ch[1]里在进行处理么?
我这样执行之后每次dwReadSize里都是0,*ch打印出来是问号,看了半天也不知道什么错误啊

求高人解答~~不胜感激

你的代码逻辑上没有太大错误,只是对ReadFile的结果判断是否到文件尾部的方法不对,你可以参考MSDN的说明,当ReadFile读取到文件尾部时返回值为true,并且读取的字节数置0,你的代码可以做一下修改(以下代码测试通过):

BOOL bResult = FALSE;
HANDLE hResult=CreateFile(".\\a.htm",GENERIC_READ,
FILE_SHARE_READ,0,OPEN_EXISTING,0,0);
if(hResult<0 )
{
printf("文件打开失败!");
return -1;
}
else
{
bResult = ReadFile(hResult,&ch[0],1,&dwReadSize,NULL);
printf("%d %c",dwReadSize,*ch);

if(bResult && (0 == dwReadSize))
{
printf("该文件为空。");
return -1;
}
while(!bResult || (0 != dwReadSize))
{
ReadFile(hResult,&ch[0],1,&dwReadSize,NULL);//之后对ch中的内容进行处理
}
}
CloseHandle(hResult);