m为了尝试在C中制作文件的备份副本,我发现下面的算法有时会产生额外的字符.我也尝试在while循环中声明readBuffer ,但这并没有解决问题.这是问题的一个例子.
原始文件内容
Hello there.
My name is Alice.
Done.
Run Code Online (Sandbox Code Playgroud)
备份文件内容
Hello there.
My name is Alice.
Done.ice
Run Code Online (Sandbox Code Playgroud)
如您所见,在之前缓冲的消息的最后一行中留下了字符.这只发生在文件的最后几行,因为任何其他时间缓冲区都填充了新内容.如何纠正我的逻辑以解决此问题?
while(0 != bytesRead)
{
bytesRead = read(fdRead,readBuffer, BUFFER_SIZE);
if(0>bytesRead)
{
fprintf(stderr,"read() on '%s' for backup failed.\nError Info: %s\n",fileName,strerror(errno));
exit(EXIT_FAILURE);
}
else if(0<bytesRead)
{
if(-1 == write(fdWrite,readBuffer,BUFFER_SIZE))
{
fprintf(stderr,"An error occurred while writing backup for '%s'.\nError Info: %s\n",fileName,strerror(errno));
exit(EXIT_FAILURE);
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
213 次 |
| 最近记录: |