Avatar billede amd Nybegynder
25. marts 2003 - 19:40 Der er 30 kommentarer og
1 løsning

Lave/redigere/slette filer?

Hej.... jeg er ret dårlig til c++ ;)
Jeg sidder og leger lidt med dosapplikationer...
Er der nogen, der ved hvordan man laver/redigerer/sletter filer i sådanne programmer??
Eller noget, der har en side hvor den slags ting står beskrevet... ?
Jeg bruger dev++ 4 :)
Avatar billede arne_v Ekspert
25. marts 2003 - 19:42 #1
Der er mange måder at gøre det på.

Opret fil:

C:

#include <stdio.h>

FILE *fp;
fp = fopen(filename, "w");

C++:

#include <fstream>

using namespace std;

ofstream f(filename);
Avatar billede arne_v Ekspert
25. marts 2003 - 19:43 #2
slet fil:

#include <stdio.h>

remove(filename);
Avatar billede arne_v Ekspert
25. marts 2003 - 19:44 #3
rediger fil:

Som ny i C/C++ vil jeg foreslå at du læser den gamle fil og skriver
til en ny fil med rettelser.
Avatar billede arne_v Ekspert
25. marts 2003 - 19:45 #4
Ovenstående er sådan rimelig standard.

Derudover findes der også en lang række Windows og Unix specifikke
muligheder.

Men start med standard.
Avatar billede amd Nybegynder
25. marts 2003 - 19:46 #5
Takker...:)
Men hvordan fortæller man den hvad der skal stå i den fil man opretter ??
Avatar billede arne_v Ekspert
25. marts 2003 - 19:50 #6
Du skriver det hele.

#include <stdio.h>

FILE *fp;
fp = fopen(filename, "w");
fprintf(fp, "Linie 1\n");
fprintf(fp, "Linie 1\n");

eller:

#include <fstream>

using namespace std;

ofstream f(filename);
f << "Linie 1" << endl;
f << "Linie 2" << endl;
Avatar billede amd Nybegynder
25. marts 2003 - 19:51 #7
Takker =)
Avatar billede arne_v Ekspert
25. marts 2003 - 19:52 #8
Hvis det skal være et komplet eksempel:

#include <stdio.h>

int main()
{
  FILE *fp;
  fp = fopen(filename, "w");
  fprintf(fp, "Linie 1\n");
  fprintf(fp, "Linie 1\n");
}

og:

#include <fstream>

using namespace std;

int main()
{
  ofstream f(filename);
  f << "Linie 1" << endl;
  f << "Linie 2" << endl;
}
Avatar billede amd Nybegynder
25. marts 2003 - 19:54 #9
Noget jeg bare ikke forstår er, hvilken fil den skriver til der :)
Avatar billede amd Nybegynder
25. marts 2003 - 19:56 #10
og den siger, at "filename" hvor jeg iøvrigt har forsøgt, at skrive et filnavn er uncleared???
Avatar billede arne_v Ekspert
25. marts 2003 - 19:58 #11
Sorry - det gik vist lige lovligt stærkt.

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

eller:

char filename[] = "minfil.dat";
fp = fopen(filename, "w");

eller en anden måde at have en variabel med filnavn på.

Tilsvarende for C++.
Avatar billede amd Nybegynder
25. marts 2003 - 20:00 #12
Ikke for at være besværlig, men hvordan skriver man så ?:D
Avatar billede amd Nybegynder
25. marts 2003 - 20:02 #13
Hehehe.. jeg er helt rund på gulvet... ka jeg få dig til at skrive komplette eksempler??
Hvis lige du gør det med dem alle sammen kyler jeg lige 20 points mere efter dig ;)
Avatar billede amd Nybegynder
25. marts 2003 - 20:03 #14
Ska kun være til c++
Avatar billede arne_v Ekspert
25. marts 2003 - 20:05 #15
#include <stdio.h>

int main()
{
  FILE *fp;
  fp = fopen("minfil.dat", "w");
  fprintf(fp, "Linie 1\n");
  fprintf(fp, "Linie 1\n");
}

og:

#include <fstream>

using namespace std;

int main()
{
  ofstream f("minfil.dat");
  f << "Linie 1" << endl;
  f << "Linie 2" << endl;
}

har jeg lige testet hos mig !
Avatar billede arne_v Ekspert
25. marts 2003 - 20:06 #16
Det jeg kalder C virker både i C og C++.

Det jeg kalder C++ virker kun i C++.
Avatar billede amd Nybegynder
25. marts 2003 - 20:11 #17
Ahh.. smart :o)
Opretter lige spg med lidt flere points ;)
Avatar billede amd Nybegynder
25. marts 2003 - 20:13 #18
Avatar billede arne_v Ekspert
25. marts 2003 - 20:15 #19
Iøvrigt: ovenstående C virker i C++, det meste C virker i C++, men
det er muligt at lave C kode som ikke kompiler med C++.
Avatar billede amd Nybegynder
25. marts 2003 - 20:56 #20
Okay :)
Forresten, hvordan skal man erklære fp i dit åben eksempel ??
Avatar billede arne_v Ekspert
25. marts 2003 - 20:59 #21
fp er erklæret som pointer til fil object (FILE *).

Og det skal det bare.

Så er det fopen som åbner filen og giver fp en værdi som så kan
bruges i fprintf (og masser af andre skrive/læse funktioner).
Avatar billede arne_v Ekspert
25. marts 2003 - 21:01 #22
Ren teknisk er typen FILE erklæret i stdio.h og du behøver ikke
bekymre dig om hvad den egentlig indeholder.
Avatar billede amd Nybegynder
26. marts 2003 - 09:34 #23
Den brikker sig bare over at den ikke er erklæret :-s
Avatar billede arne_v Ekspert
26. marts 2003 - 09:36 #24
Du har en:

#include <stdio.h>

og den beklager sig over at FILE ikke er erklæret:

  FILE *fp;

?

Kan du poste et stykke kode ?
Avatar billede amd Nybegynder
29. marts 2003 - 18:11 #25
Vil du ik lige sige hvordan man sletter en fil ?? :D
remove(filename);
virker ikke ;)
Avatar billede arne_v Ekspert
29. marts 2003 - 18:19 #26
#include <stdio.h>

remove("minfil.dat");

vil slette minfil.dat !

Medmindre naturligvis at den er markeret som readonly eller
filen er åben.
Avatar billede arne_v Ekspert
29. marts 2003 - 18:20 #27
Hvis filen åben fordi du selv har brugt den, så skal du bare bruge:
  fclose(fp);
Avatar billede arne_v Ekspert
29. marts 2003 - 18:23 #28
eller:
  f.close();
for ofstream.
Avatar billede amd Nybegynder
29. marts 2003 - 18:28 #29
implicit declaration of function `int remove(...)'
?????? :-S
Avatar billede arne_v Ekspert
29. marts 2003 - 18:30 #30
Har du #include <stdio.h> ?
Avatar billede amd Nybegynder
29. marts 2003 - 18:35 #31
Upz, nej :D
Takker
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