时打印的百分比这段代码是我公司开发的FTP客户端的部分:转移
for(size_to_receive = file_size; size_to_receive > 0;){
nread = read(f_sockd, filebuffer, size_to_receive);
if(nread < 0){
perror("read error on retr");
close(fd);
return -1;
}
if(write(fd, filebuffer, nread) != nread){
perror("write error on retr");
close(fd);
return -1;
}
size_to_receive -= nread;
}
我想实现下载的文件的百分比,但我有一些问题。我试图用这种方法:
for(size_to_receive = file_size; size_to_receive > 0;){
nread = read(f_sockd, filebuffer, size_to_receive);
tx += nread;
printf("%d%%\n", (tx * 100/file_size));
fflush(NULL);
if(nread < 0){
perror("read error on retr");
close(fd);
return -1;
}
if(write(fd, filebuffer, nread) != nread){
perror("write error on retr");
close(fd);
return -1;
}
size_to_receive -= nread;
}
但传递开始时,因为我不喜欢它,“20%”立即打印,也因为如果我删除了\n
从20%%\n
- 40%%\n
等,这些值将在传输结束时打印,而不是立即打印。
我该如何开发更好的代码?
的可能重复的[显示进度指示器(http://stackoverflow.com/questions/6591264/show-progress-indicator) – moooeeeep