首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >win32在C中使用with循环ReadFile/WriteFile从一个程序写到一个新程序

win32在C中使用with循环ReadFile/WriteFile从一个程序写到一个新程序
EN

Stack Overflow用户
提问于 2013-09-26 00:39:21
回答 1查看 3.2K关注 0票数 1

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

代码语言:javascript
运行
复制
int n = 0;
while(n=ReadFile(hFileSource, buffer, 23, &dwBytesRead, NULL)){
    WriteFile(hFileNew, buffer, dwBytesRead, &dwBytesWritten, NULL);
}       

CloseHandle(hFileSource);
CloseHandle(hFileNew);

return 0;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-26 00:46:04

你没有正确地测试文件的结尾。ReadFile不返回EOF的failure,它返回成功,但读取的字节数为0。要正确检查EOF:

代码语言:javascript
运行
复制
while (ReadFile(hFileSource, buffer, 23, &dwBytesRead, NULL))
{
    if (dwBytesRead == 0)
        break;
    // write data etc
}

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

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19017457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档