先贴代码
printf(
"Print Any Key To CreateFile\r\n");
getchar();
HANDLE hFile = CreateFile(
L
"TempFile.txt",
GENERIC_ALL,
FILE_SHARE_READ,
NULL,CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
if(hFile != NULL && hFile != INVALID_HANDLE_VALUE)
{
printf(
"CreateFile Success\r\n");
CHAR szWriteBuffer[
0x100] = {
0};
for(
int i =
0 ;i <
0x100 -
1;i ++)
{
szWriteBuffer[i] = i %
10 +
0x6a;
}
DWORD dwHasWrite;
printf(
"Print Any Key To WriteFile\r\n");
getchar();
if(WriteFile(hFile,szWriteBuffer,
0x100,&dwHasWrite,NULL))
{
printf(
"WriteFile Success :%d\r\n",dwHasWrite);
FlushFileBuffers(hFile);
char szReadBuffer[
0x100] = {
0};
DWORD dwHasRead =
0;
SetFilePointer(hFile,
0,
0,FILE_BEGIN);
while(dwHasRead ==
0)
{
printf(
"Print Any Key To Read File\r\n");
getchar();
if(ReadFile(hFile,szReadBuffer,
0x200,&dwHasRead,NULL))
{
printf(
"ReadFile Success :%d\r\n",dwHasRead);
if(dwHasRead == dwHasWrite)
{
if(
memcmp(szWriteBuffer,szReadBuffer,
0x100))
{
printf(
"不一样\r\n");
printf(
"szReadBuffer:%s\r\nszWriteBuffer:%s\r\n",szReadBuffer,szWriteBuffer);
}
else
{
printf(
"一样\r\n");
}
}
else
{
printf(
"读取数据不够???\r\n");
printf(
"szReadBuffer:%s\r\n",szReadBuffer);
}
}
else
{
printf(
"ReadFile Error :%d",GetLastError());
}
}
}
else
{
printf(
"WriteFile Error :%d",GetLastError());
}
printf(
"Print Any Key To DeleteFile\r\n");
getchar();
CloseHandle(hFile);
DeleteFile(_T(
"TempFile.txt"));
}
else
{
printf(
"CreateFile Error :%d",GetLastError());
}
问题的关键是,在刚刚进行了WriteFile 之后,文件指针指向文件末尾,导致读取操作失败,重新设置文件指针即可