1

我编写了一个程序,它从一个文件中读取文本并将其复制到一个新文件中。使用 while 循环和 ReadFile/Writefile 函数,我的程序可以工作......但我的程序不会停止运行,除非我强制停止它。我猜我没有正确关闭我的句柄,或者我的 while 循环可能设置错误。一旦我强制停止我的程序,文件就会以新名称成功复制到新位置。

int n = 0;
while(n=ReadFile(hFileSource, buffer, 23, &dwBytesRead, NULL)){
    WriteFile(hFileNew, buffer, dwBytesRead, &dwBytesWritten, NULL);
}       

CloseHandle(hFileSource);
CloseHandle(hFileNew);

return 0;
4

1 回答 1

5

您没有正确测试文件结尾。ReadFileEOF 不返回失败,它返回成功但读取了 0 个字节。要正确检查 EOF:

while (ReadFile(hFileSource, buffer, 23, &dwBytesRead, NULL))
{
    if (dwBytesRead == 0)
        break;
    // write data etc
}

有什么理由你一次只能读/写 23 个字节吗?这将是相当低效的。

于 2013-09-26T00:46:04.450 回答