gpt4 book ai didi

c - 在传输过程中打印百分比

转载 作者:太空宇宙 更新时间:2023-11-04 06:04:43 25 4
gpt4 key购买 nike

此代码是我开发的 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等,这些值在传输结束时打印,而不是立即打印。

我怎样才能开发出更好的代码?

最佳答案

for (size_to_receive = file_size; size_to_receive > 0;) {
nread = read(f_sockd, filebuffer, size_to_receive);
tmp_xc += nread;

printf("%d%%\r", (tmp_xc * 100 / file_size));
fflush(NULL);
}

关于c - 在传输过程中打印百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12589962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com