mEn essayant de faire une copie de sauvegarde d'un fichier en C, je trouve que des caractères supplémentaires sont parfois générés par l'algorithme ci-dessous. J'ai également essayé de déclarer le readBuffer dans la boucle tandis que, mais cela n'a pas résolu le problème. Voici un exemple du problème.Caractère supplémentaire ajouté au tampon lors de l'écriture dans un fichier C
Contenu du fichier original
Hello there.
My name is Alice.
Done.
Contenu du fichier de sauvegarde
Hello there.
My name is Alice.
Done.ice
Comme vous pouvez le voir, il y a des personnages laissés dans la dernière ligne du message en mémoire tampon précédemment . Cela ne se produit que sur les dernières lignes du fichier, car à tout autre moment, le tampon est rempli de nouveaux contenus. Comment corriger ma logique ci-dessous pour résoudre ce problème?
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);
}
}
}
A travaillé comme un charme. Merci! – XBigTK13X