Avatar billede d34c0n Praktikant
27. februar 2003 - 19:40 Der er 4 kommentarer og
1 løsning

Splitte fil...

Hi :)

Jeg skal igang med at lave mit eget program som skal kunne splitte filer. F.eks. vil jeg splitte en EXE-fil i to lige store dele og jeg ved hvordan det gøres med notesblok, det kræver bare noget arbejde. Jeg har tænkt mig at mit program skal gemme antal linjer i en buffer og dele det med to (eller et andet antal delte filer) og så finder den jo halvdelen af linjerne og så skal den kopiere alt indhold derfra .... det er lidt svært at forklare :)

håber jeg kan få lidt hjælp fra nogen der ved noget om det!
Avatar billede d34c0n Praktikant
27. februar 2003 - 19:43 #1
Hvis vi siger at den fil som jeg vil have delt indeholder følgende hvis det åbnes i notesblok: "123456" - så ville den_delte_fil1.bla indeholde "123" og de_delte_fil2.bla "456". <--- Håber det vil lade jer forstå
Avatar billede arne_v Ekspert
27. februar 2003 - 19:45 #2
En EXE-fil har ikke linier, så du kan ikke tælle linier.

Men så tæller du bare i bytes.

Det må være ret simpelt.

Find ud af hvor mange byts der skal være i hver del. Og så kopierer
du bytene.

Du skal bare huske at åbne filerne binært ("rb" og "wb" i fopen),
så kan det næsten ikke gå galt.
Avatar billede d34c0n Praktikant
27. februar 2003 - 20:45 #3
Jeg vil helst have et eksempel, alt det der teori har jeg fundet ud af og har allerede testet det med en .bat fil hvor jeg selv har delt en fil på 2 linjer...
Avatar billede arne_v Ekspert
27. februar 2003 - 20:58 #4
Her er et meget simpelt eksempel:

#include <stdio.h>

int main(int argc,char*argv[])
{
  FILE *fp1;
  FILE *fp2;
  char fnm[10];
  int nbyt,nfil;
  int c;
  fp1=fopen(argv[1],"rb");
  nfil=1;
  nbyt=0;
  sprintf(fnm,"%d.zzz",nfil);
  fp2=fopen(fnm,"wb");
  while((c=fgetc(fp1))>=0) {
      fputc(c,fp2);
      nbyt++;
      if((nbyt%1000)==0) {
        fclose(fp2);
        nfil++;
        sprintf(fnm,"%d.zzz",nfil);
        fp2=fopen(fnm,"wb");
      }
  }
  fclose(fp1);
  fclose(fp2);
}
Avatar billede arne_v Ekspert
27. februar 2003 - 21:00 #5
Det splitter første argument op i filer af 1000 bytes med navne
1.zzz, 2.zzz, ... !

Hvis det skal være rigtigt godt skal:
  - størrelse kunne angives
  - filnavnet for del-filerne skal kunne angives
  - fgetc/fputc skal erstattes af f.eks. fread/fwrite
    for større effektivitet
men det illusterer lidt hvordan man kommer igang.
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