Diese Werbeeinblendung erscheint nach 5 Minuten Idletime.
- Werbung - weiter auf Codershell surfen.
C/C++ » [C] Datei kopieren mit Statusbar
Seiten:  1 
[ Sie müssen angemeldet sein, um einen Beitrag zu verfassen. ]
Geschrieben von sofl (Moderator) am 11.02.2009 um 13:36 Uhr.
Beiträge: 12 / #1772

Kontakt: Mailen | ICQ

CODE
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
#include <stdio.h>
#include <stdlib.h>

int iCopyFile(char *source, char *destination)
{
  FILE *from, *to;
  long filesize=0;
  long geschafft=0;
  char ch;
  int ProzentFertig;
  int lastprozent=0;

  if((from = fopen(source, "rb"))==NULL)
  {
      printf("Fehler beim Oeffnen der Quelldatei!\n");
      return 1;
  }
  
  /*Groese ermitteln*/
  fseek( from, 0, SEEK_END );
  filesize= ftell( from );
  
  rewind(from);

  if((to = fopen(destination, "wb"))==NULL)
  {
      printf("Fehler beim Erzeugen der Ziel Datei!\n");
      return 2;
  }
  
  printf("Quelle:\t%s\nZiel:\t%s\nGroesse: %ld Bytes\n",source,destination,filesize);
  printf("Fortschritt: ");

  while(!feof(from)) {
      ch = fgetc(from);
      
      if(ferror(from))
      {
          printf("Fehler beim Lesen der Quelldatei!.\n");
          return 3;
      }
          
      if(!feof(from)) 
          fputc(ch, to);
      
      geschafft++;
      
      ProzentFertig=round((double)geschafft/(double)filesize*60);
      
      if (ProzentFertig > lastprozent)
          printf("%c",219);
      
      lastprozent=ProzentFertig;
          
      if(ferror(to))
      {
          printf("Fehler beim Schreiben der Zieldatei\n");
          return 4;
      }
  }

  if(fclose(from)==EOF)
  {
      printf("Fehler beim Schliessen der Quelldatei!.\n");
      return 5;
  }

  if(fclose(to)==EOF)
  {
      printf("Fehler beim Schliessen der Zieldatei!.\n");
      return 6;
  }
  
  printf("\nDatei erfolgreich kopiert!");

  return 0;
}

int iDateiEingabe()
{
    char *quelle;
    char *ziel;
    
    printf("Geben sie bitte die Quelldatei ein: ");
    gets(quelle);
    
    printf("Geben sie bitte die Zieldatei ein: ");
    gets(ziel);
    
    iCopyFile(quelle,ziel);
    return 0;
}

int iController()
{
    iDateiEingabe();
    return 0;
}

int main()
{
    iController();
    getch(); //benoetigt eventuell conio.h
    return 0;
}


Hier ein kleines Bsp. zum Kopieren einer Datei mit Fortschrittsanzeige.

mfg sofl


wong itdel.iciode.blinklisttechnoratigoogleblinkbitsyahooyiggblogmarksfurlspurlwebnewsstumbleupondigg itma.gnolia.comco.mments Zitieren Beitrag melden

-Werbung-
Geschrieben von neon (Moderator) am 11.02.2009 um 18:55 Uhr.
Beiträge: 56 / #1782

Kontakt: Mailen

Danke dafür! dennoch finde ich deine return's unnötig wenn du nichtmal prüfst ob was funktioniert hat oder nicht! :P

edit:
btw. ist getch(); nicht eigentlich boardland? hab iwas mal gehört :)
mir gefällt system("PAUSE"); besser!


Zitieren Beitrag melden
Geschrieben von sofl (Moderator) am 11.02.2009 um 22:44 Uhr.
Beiträge: 12 / #1786

Kontakt: Mailen | ICQ

mit den returns hast nich ganz unrecht. getch() is aus der conio,  kann sein das das borland is. system("pause"); hat den nachteil, dass es nicht platform unabhängig is.


Zitieren Beitrag melden
[ Sie müssen angemeldet sein, um einen Beitrag zu verfassen. ]
Seiten:  1 
Login / Account
E-Mail Adresse:

Passwort:



Passwort zurücksetzen
Werbung