mПри попытке сделать резервную копию файла в C я обнаружил, что дополнительные символы иногда генерируются алгоритмом ниже. Я также попытался объявить readBuffer в цикле while , но это не решило проблему. Вот пример проблемы.
Исходное содержимое файла
Hello there.
My name is Alice.
Done.
Содержимое файла резервной копии
Hello there.
My name is Alice.
Done.ice
Как видите, в последней строке от предыдущего буферизованного сообщения остались символы. Это происходит только в последних строках файла, поскольку в любое другое время буфер заполняется новым содержимым. Как можно исправить приведенную ниже логику, чтобы решить эту проблему?
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);
}
}
}