Avatar billede venja Nybegynder
07. maj 2003 - 15:32 Der er 8 kommentarer og
1 løsning

læse ukendt antal linier og derefter slette en tekstfil

jeg opretter en fil hvori jeg vil skrive måledata for hvert kvarter (dvs. 96 målepunkter pr døgn) derfter vil jeg gerne tømme filen og begynde på et nyt døgn. - Derudover vil jeg kunne læse alle linier i filen uden at kende det samlede antal datalinier - hvordan gør man dette ??? (jeg har brug for gode detaljer for jeg er ikke ret hård til c++)
Avatar billede arne_v Ekspert
07. maj 2003 - 15:37 #1
Du overskriver bare filen når du starter forfra.

Når du skal læse den læser du vel bare filen indtil der ikke er flere linier.
Avatar billede arne_v Ekspert
07. maj 2003 - 15:38 #2
FILE *fp;

fp = fopen("test.dat", "w");

vil åbne filen så du overskriver altså starte forfra.

fp = fopen("test.dat", "a");

vil åbne filen så du appender.
Avatar billede gumbert Nybegynder
07. maj 2003 - 15:40 #3
#include <iostream.h>
#include <fstream.h>

void main(void)
{
    ifstream input_fil("filnavn.type");

    char ord[64];

    while (! input_fil.eof()) //.eof() betyder end of file.
    {              // altså loopet kører så længe slutningen af filen ikke
        input_fil >>ord;  // er nået
       
        cout<<ord<<endl;
    }
}

ps. husk at lægge en fil (filnavn.type) programmet kan
læse fra når du prøver :)
Avatar billede arne_v Ekspert
07. maj 2003 - 15:40 #4
Du kan læse på mange måder. Men her er et forslag:

FILE *fp;
char line[100];

fp = fopen("test.dat", "r");
while(!feof(fp)) {
  fgets(line,sizeof(line),fp);
  // process line
}
fclose(fp);
Avatar billede arne_v Ekspert
07. maj 2003 - 18:40 #5
gumbert>

Et par små kommentarer.

1)

Med nyere compilere vil du ikke bruge:

#include <iostream.h>
#include <fstream.h>

men:

#include <iostream>
#include <fstream>

using namespace std;

2)

Strengt taget er det:

int main()

ikke:

void main()

[visse C/C++ folk ligger meget vægt på dette]

3)

input_fil >> ord

læser lige præcis det som variabel navnet antyder nemlig ord - ikke linier.
Og det gør en forskel. Mellemrum forsvinder når man læser ord.
Avatar billede olennert Nybegynder
07. maj 2003 - 21:41 #6
arne> Og jeg vil stadig kæmpe imod using namespace std; :-).

I stedet vil jeg foreslå

using std::ifstream;
using std::cout;
using std::endl;
Avatar billede venja Nybegynder
07. maj 2003 - 23:46 #7
takker ! - kan man også søge efter  bestemte data i en fil ?
Avatar billede arne_v Ekspert
07. maj 2003 - 23:49 #8
Ja, men kun på den hård måde:
  - læs alle linierne
  - test på om det du leder efter er i linien
Avatar billede venja Nybegynder
08. maj 2003 - 16:49 #9
fint nok. - tak!
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