時打印的百分比這段代碼是我公司開發的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