标题:怎么复制文件内容的同时输出进度百分比? 新手求助
只看楼主
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
回复 10楼 炎天
  这样也可以~  
   /*while(!feof(in))
     {
            len++;
            ch = fgetc(in);
     }*/

     fseek(in,0L,2);
     len=ftell(in);
     fseek(in, 0L,0);

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-29 22:24
bb102
Rank: 1
等 级:新手上路
帖 子:83
专家分:3
注 册:2016-10-22
得分:0 
回复 10楼 炎天
输出在屏幕上的字符不全
2016-12-29 22:25
bb102
Rank: 1
等 级:新手上路
帖 子:83
专家分:3
注 册:2016-10-22
得分:0 
回复 9楼 wp231957
好,谢谢
2016-12-29 22:28
bb102
Rank: 1
等 级:新手上路
帖 子:83
专家分:3
注 册:2016-10-22
得分:0 
回复 10楼 炎天
输出在屏幕的字符不全
2016-12-29 22:31
bb102
Rank: 1
等 级:新手上路
帖 子:83
专家分:3
注 册:2016-10-22
得分:0 
回复 11楼 九转星河
怎么处理输出在屏幕的字符不全
2016-12-29 22:36
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
得分:6 
程序代码:
 #include<stdio.h>
  #include<windows.h>
  #include<stdlib.h>
  main()
  {
        char start[100];
      int len = 0 ,t = 0 ,l = 0;
      FILE *in,*out;
      char ch,infile[10],outfile[10];
      printf("enter the name of the fileread:");
      scanf("%s",infile);
      printf("enter the name of the filewrite:");
      scanf("%s",outfile);
      if((in=fopen(infile,"r"))==NULL)
      {
          printf("can not open the file!\n");
          exit(0);
      }
      if((out=fopen(outfile,"w"))==NULL)
      {
          printf("can not open the file!\n");
          exit(0);
      }
      
      fseek(in,0L,2);
      len=ftell(in);
      fseek(in, 0L,0);
      
      while(!feof(in))
      {
          t++;
          ch=fgetc(in);
          fputc(ch,out);
          start[t-1] = ch;
          printf("%*.*s",-(len+1),t,start);
          
          printf("\t\t");
          printf("%.2lf", 1.0*(t-1)/len);
          Sleep(280);
          for(l = 0; l <+12+len+1+3; l++)
          {
              printf("\b");
          }
          
      }
      putchar(10);
      fclose(in);
      fclose(out);
  }

早知做人那么辛苦!  当初不应该下凡
2016-12-30 09:10
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:4 
给你一段能运行的代码  
程序代码:
#include <stdio.h>
#include <string.h>
#include <windows.h>

int main(void)
{
    FILE *in,*out;
    char ch;
    in=fopen("1.txt","rb");
    out=fopen("2.txt","w");
    fseek(in,0,SEEK_END);
    int fsize=ftell(in);
    char* t="Now it will copping completed: ";
    int len=(int)strlen(t);
    fseek(in,0,SEEK_SET);
    ch=fgetc(in);
    int i=1;
    while(!feof(in))
    {
        fputc(ch,out);
        printf("%s %6.2lf",t,1.0*i/fsize*100);
        Sleep(30);
        for(int k=0;k<len+7;k++) printf("\b");
        ch=fgetc(in);
        i++;
    }
    printf("\n");
    fclose(in);
    fclose(out);
    return 0;
}




DO IT YOURSELF !
2016-12-30 09:43
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
不过这么做代价有些大   原本不到一秒就可以完成的copy动作  变成好几十倍了

DO IT YOURSELF !
2016-12-30 09:44
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
以下是引用bb102在2016-12-29 22:36:14的发言:

怎么处理输出在屏幕的字符不全
主要是你还没明白在控制台下显示进度表 是什么原理  、
出现吃字符的现象  主要是清屏不给力 没有完整的清屏

DO IT YOURSELF !
2016-12-30 09:46



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-473116-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.382494 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved