Avatar billede stigc Nybegynder
05. juni 2000 - 15:09 Der er 2 kommentarer og
1 løsning

kopi af fil

Jeg skal læse binært og skrive til en fil. Altså kopiere en fil:

Følgende virker ikke, men hvordan gør man så?

  ifstream indfil;
        indfil.setf(ios::binary);
        indfil.open("test.mp3");
        ofstream udfil;
        udfil.setf(ios::binary);
        udfil.open("test2.mp3");

        unsigned char ch;
        indfil.get(ch);
        while(indfil)
        {
        udfil.put(ch);
        indfil.get(ch);
        }

        indfil.close();
        udfil.close();
Avatar billede dmk Nybegynder
05. juni 2000 - 15:24 #1
Jeg fandt lige noget jeg har lavet engang for længe siden:

bool CopyFile(char* Source, char* Dest)
{
  FILE* fSource;
  FILE* fDest;
  fSource=fopen(Source, "rb");
  if (!Source) return false;
  fDest=fopen(Dest, "wb");
  if (fDest==NULL) { fclose(fSource); return false; }
  fseek(fSource, 0, SEEK_SET);
  fseek(fDest,  0, SEEK_SET);
  char Buffer[2048];
  int BytesRead=fread(Buffer, 1, 2048,  fSource);
  fwrite(Buffer, 1, BytesRead,  fDest);
  while (BytesRead==2048)
  {
    BytesRead=fread(Buffer, 1, 2048, fSource);
    fwrite(Buffer, 1, BytesRead, fDest);
  } // END while more blocks to read
  fclose(fDest);
  fclose(fSource);
  return true;
} // END boolean function CopyFile


DMK
Avatar billede stigc Nybegynder
05. juni 2000 - 15:57 #2
Ja jeg kigget lige i help i borland og fandt også fwrite, fread. Kigger på det: Havde lavet det her indtil videre, virker heller ikker

      FILE *udfil;
        udfil = fopen("test2.mp3", "w");

        FILE *indfil;
        indfil = fopen("test.mp3", "r");

        unsigned char X [10];
        while (fread (X, 1, 1, indfil)!=0)
        fwrite (X, 1, 1, udfil);

        fclose(indfil);
        fclose(udfil);

Giver point nå jeg har testet dit!
Avatar billede soepro Nybegynder
06. juni 2000 - 08:39 #3
Nej, for du læser filerne som tekst, dvs. strenge adskildt af CR+LF. Du skal tilføje 'b' i dine modes: "wb" og "rb" for at læse dem binært. (Tekstmode vil også stoppe på CTRL+Z selvom der rent faktisk er flere tegn i filen.)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester