Avatar billede yates Nybegynder
31. juli 2006 - 09:06 Der er 2 kommentarer

Ændre en byte i en tekstfil uden genskrive alt

Hej,

hvis man har en stor tekstfil (vi snakker Gb) og vil ændre i den, er man så nødt til at omskrive hele filen eller er det muligt at ændre et par bytes direkte ?
Giv gerne et lille kodeksempel.

Y.
Avatar billede arne_v Ekspert
31. juli 2006 - 13:28 #1
du kan ikke fjernes bytes eller indsætte flere bytes, men du kan godt
overskrive bytes

fseek, fread og fwrite

eksempel:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
  FILE *fp;
  int n;
  char *p;
  char buf[10000];
  fp = fopen("z.txt", "r+b");
  fseek(fp,0,SEEK_SET);
  n = fread(buf,1,sizeof(buf),fp);
  p = strstr(buf,"1234");
  if(p != NULL)
  {
      memcpy(p,"4321",strlen("4321"));
      fseek(fp,0,SEEK_SET);
      fwrite(buf,1,n,fp);
  }
  fclose(fp);
  return 0;
}
Avatar billede arne_v Ekspert
11. september 2006 - 23:41 #2
OK ?
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