Avatar billede trp79 Nybegynder
21. oktober 2002 - 13:16 Der er 8 kommentarer og
2 løsninger

Læsning og skrivning til fil

Hvordan læses fx. linie 5 i en txt-fil? Vi har prøvet med fscanf men kan kun få den til at læse første linie. Vi vil gerne have et kode eksempel.

Hvordan skriver man ligeledes i fx linie 6, således at det ikke påvirker(sletter) de andre linier i filen? Et kodeeksempel vil også være lækkert her...
Avatar billede exp-ralle Nybegynder
21. oktober 2002 - 13:28 #1
Følger lige med...
Avatar billede morten_leth Nybegynder
21. oktober 2002 - 13:31 #2
http://www.php.net/manual/en/function.fopen.php

tag et kig på dette link.... det vil højest sandsynligt hjælpe lidt.
Avatar billede morten_leth Nybegynder
21. oktober 2002 - 13:32 #3
det er fopen, du skal bruge!
Avatar billede kamikaze Nybegynder
21. oktober 2002 - 13:42 #4
Prøv at kigge her:
http://www.eksperten.dk/spm/261736

Det skal "håndlaves", men jeg har ikke lige tid idag...
Avatar billede kamikaze Nybegynder
21. oktober 2002 - 13:50 #5
Altså:

Du læser alle linier, og smider dem væk du ikke skal bruge!
Avatar billede trp79 Nybegynder
21. oktober 2002 - 14:01 #6
til kamikaze
men hvordan læser man de enkelte linier???
vi prøvede med fscanf(filename, "%d", & variabelnavn)
og lavede flere af disse linier itræk,
men det funger ikke.
Avatar billede kamikaze Nybegynder
22. oktober 2002 - 09:36 #7
Du kan læse en enkelt linie med fgets:

FILE* pFile = fopen("MyFile.txt", "r+b");
char pLineBuffer[1024]; // 1024 er MAX længde, incl. nul-terminator
fgets(pLineBuffer, 1024, pFile); // her indeholder pLineBuffer den første linie
Avatar billede kamikaze Nybegynder
22. oktober 2002 - 09:38 #8
Altså:

FILE* pFile = fopen("MyFile.txt", "r+b");
char pLineBuffer[1024]; // 1024 er MAX længde, incl. nul-terminator
int i=0;
while ((fgets(pLineBuffer, 1024, pFile)) != NULL)
{
  cout << "Linie " << i++ << ":" << pLineBuffer << endl;
}
}
Avatar billede soepro Nybegynder
23. oktober 2002 - 13:56 #9
Hvad med:

#include <stdio.h>
#include <conio.h>

int main(void)
{
  FILE *inpFile;
  FILE *outpFile;
  int  lineCount;
  char  buffer[256];
  char *nyLinie = "Denne linie skal sættes ind på linie 10.";

  if ((inpFile = fopen("C:\\gl_fil.txt", "rt")) == NULL
  || ((outpFile = fopen("C:\\ny_fil.txt", "wt")) = NULL)
    return -1;

  lineCount = 0;
  while (fgets(buffer, sizeof(buffer)-1, inpFile) != NULL)
  {
    if (++lineCount == 10)
      fputs(outpFile, nyLinie);
    else
      fputs(outpFile, buffer);
  };

  fclose(outpFile);
  fclose(inpFile);
  return 0;
}

Ellers prøv at bruge søg funktionen: http://www.eksperten.dk/find.phtml?words=l%E6s+skriv+fil+linie+tekst&catid=4
Avatar billede smokes Nybegynder
23. oktober 2002 - 16:39 #10
lyder som om du skriver en teksteditor.. hvorfor gemmer du ikke hele skidtet i hukommelsen? så kan du sætte ind og ændre som det passer dig.. gem den færdige buffer som en tekst fil.. og læs den på samme måde *s*
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