04. februar 2006 - 13:59Der er
30 kommentarer og 1 løsning
Oprettelse, sletning, læsning og redigering af filer
Hej eksperter!
Er dete korrekt, at der primært er to måder at oprette, slette, læse og redigere filer på med C++? Eks.: fopen og open - men nu vil jeg gerne have at vide, hvad forskellene er - og hvilke jeg bør bruge.
Hvordan åbner jeg en fil, hvilken metode skal jeg helst bruge? Hvordan skriver jeg til en fil, -||-? Læse fra en fil? Slette en fil? Flytte/omdøbe en fil?
Det var et par små spørgsmål til de kloge hoveder...
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
I C: fopen er standard funktionen til at åbne filer. open er pre standard, men bruges stadig lidt men mest på linux/unix platforme. Der er ikke ret meget grund til at bruge den. Til at læse og skrive er der fgets, fwrite, fread, fprintf, fscanf, fgetc og et par mere
I C++: ifstream og ofstream er class'erne, deres constructor og open kan åbne filerne. >> og << til at læse og skrive text, read og write til at læse og skrive binært.
Slette en fil: remove Omdøbe: rename
Synes godt om
Slettet bruger
04. februar 2006 - 15:01#3
Eksempler:
fopen("C:\\Documents and Settings\\Administrator\\Desktop\\file.extension"); - Åbner file.extension
rename("C:\\Documents and Settings\\Administrator\\Desktop\\file.extension", "C:\\Documents and Settings\\Administrator\\Desktop\\file2.extension"); - Omdøber file.extension til file2.extension
remove("C:\\Documents and Settings\\Administrator\\Desktop\\file.extension"); - Sletter C:\\Documents and Settings\\Administrator\\Desktop\\file.extension
Er disse eksempler rigtige? Hvordan oprettes en fil?
Synes godt om
Slettet bruger
04. februar 2006 - 15:04#4
Hvis jeg nu vil oprette en fil: C:\\Documents and Settings\\Administrator\\Desktop\\file.extension - og så skrive "Hej - \nhej igen!" i den - hvordan gøres dette?
Hvis jeg så vil have filen indlæst af en app, skal jeg så sige fopen("sti", "aabningAfFil"); fread("aabningAfFil", variabel); fclose("aabningAfFil); ???
og fgets for at laese en hel linie eller fscanf for formateret laesning
Synes godt om
Slettet bruger
04. februar 2006 - 17:03#7
#include <iostream.h> #include <stdlib.h>
int main() { FILE *fp; fp = fopen("C:\\Documents and Settings\\Administrator\\Desktop\\output.txt","w"); fprintf(fp,"linie 1\nlinie2\n"); fclose(fp); }
Retunerer
c:\docume~1\admini~1\mydocu~1\c__~1\skabel~2\main.cpp: In function `int main()': c:\docume~1\admini~1\mydocu~1\c__~1\skabel~2\main.cpp:6: `FILE' undeclared (first use this function) c:\docume~1\admini~1\mydocu~1\c__~1\skabel~2\main.cpp:6: (Each undeclared identifier is reported only once c:\docume~1\admini~1\mydocu~1\c__~1\skabel~2\main.cpp:6: for each function it appears in.) c:\docume~1\admini~1\mydocu~1\c__~1\skabel~2\main.cpp:6: `fp' undeclared (first use this function) c:\docume~1\admini~1\mydocu~1\c__~1\skabel~2\main.cpp:7: implicit declaration of function `int fopen(...)' c:\docume~1\admini~1\mydocu~1\c__~1\skabel~2\main.cpp:8: implicit declaration of function `int fprintf(...)' c:\docume~1\admini~1\mydocu~1\c__~1\skabel~2\main.cpp:9: implicit declaration of function `int fclose(...)'
cout << "Oprettelse af og skrivning til fil\n\nIndtast sti: "; getline(cin, sti); cout << "Indtast titel - kun en linie: "; getline(cin, titel); cout << "Intast tekst - kun en linie: "; getline(cin, tekst); cout << "\nGenererer indhold..."; indhold = "- " + titel + " -\n\n" + tekst; cout << " \'" << indhold << "\'\nOpretter/aabner fil..."; ofstream f(sti); //FILE *fp; //fp = fopen(sti.c_str(), "w"); cout << "\nSkriver til fil..."; f << indhold; //fprintf(fp, indhold.c_str()); cout << "\nLukker fil..."; f.close(); //fclose(fp); cout << "\nSucces!\n\nTryk <ENTER> for at lukke dette vindue."; getchar(); }
Retunerer:
c:\docume~1\admini~1\mydocu~1\c__~1\skabel~2\main.cpp: In function `int main()': c:\docume~1\admini~1\mydocu~1\c__~1\skabel~2\main.cpp:33: no matching function for call to `ofstream::ofstream (string &)' D:\DEV-C_~1\Include\G__~1\fstream.h:72: candidates are: ofstream::ofstream() D:\DEV-C_~1\Include\G__~1\fstream.h:73: ofstream::ofstream(int) D:\DEV-C_~1\Include\G__~1\fstream.h:74: ofstream::ofstream(int, char *, int) D:\DEV-C_~1\Include\G__~1\fstream.h:76: ofstream::ofstream(const char *, int = ios::out, int = 436) D:\DEV-C_~1\Include\G__~1\fstream.h:79: ofstream::ofstream(const ofstream &)
cout << "Oprettelse af og skrivning til fil\n\nIndtast sti: "; getline(cin, sti); cout << "Indtast titel - kun en linie: "; getline(cin, titel); cout << "Intast tekst - kun en linie: "; getline(cin, tekst); cout << "\nGenererer indhold..."; indhold = "- " + titel + " -\n\n" + tekst; cout << " \'" << indhold << "\'\nOpretter/aabner fil..."; ofstream f(c_str(sti)); //FILE *fp; //fp = fopen(sti.c_str(), "w"); cout << "\nSkriver til fil..."; f << indhold; //fprintf(fp, indhold.c_str()); cout << "\nLukker fil..."; f.close(); //fclose(fp); cout << "\nSucces!\n\nTryk <ENTER> for at lukke dette vindue."; getchar(); }
Retunerer:
c:\docume~1\admini~1\mydocu~1\c__~1\skabel~2\main.cpp: In function `int main()': c:\docume~1\admini~1\mydocu~1\c__~1\skabel~2\main.cpp:33: implicit declaration of function `int c_str(...)' c:\docume~1\admini~1\mydocu~1\c__~1\skabel~2\main.cpp:33: warning: cannot pass objects of type `string' through `...'
cout << "Oprettelse af og skrivning til fil\n\nIndtast sti: "; getline(cin, sti); cout << "Indtast titel - kun en linie: "; getline(cin, titel); cout << "Intast tekst - kun en linie: "; getline(cin, tekst); cout << "\nGenererer indhold..."; indhold = "- " + titel + " -\n\n" + tekst; cout << " \'" << indhold << "\'\nOpretter/aabner fil..."; ofstream f(c_str()); //FILE *fp; //fp = fopen(sti.c_str(), "w"); cout << "\nSkriver til fil..."; f << indhold; //fprintf(fp, indhold.c_str()); cout << "\nLukker fil..."; f.close(); //fclose(fp); cout << "\nSucces!\n\nTryk <ENTER> for at lukke dette vindue."; getchar(); }
Retunerer:
c:\docume~1\admini~1\mydocu~1\c__~1\skabel~2\main.cpp: In function `int main()': c:\docume~1\admini~1\mydocu~1\c__~1\skabel~2\main.cpp:33: implicit declaration of function `int c_str(...)'
cout << "Oprettelse af og skrivning til fil\n\nIndtast sti: "; getline(cin, sti); cout << "Indtast titel - kun en linie: "; getline(cin, titel); cout << "Intast tekst - kun en linie: "; getline(cin, tekst); cout << "\nGenererer indhold..."; indhold = "- " + titel + " -\n\n" + tekst; cout << " \'" << indhold << "\'\nOpretter/aabner fil..."; ofstream f(str.c_str()); //FILE *fp; //fp = fopen(sti.c_str(), "w"); cout << "\nSkriver til fil..."; f << indhold; //fprintf(fp, indhold.c_str()); cout << "\nLukker fil..."; f.close(); //fclose(fp); cout << "\nSucces!\n\nTryk <ENTER> for at lukke dette vindue."; getchar(); }
Retunerer:
c:\docume~1\admini~1\mydocu~1\c__~1\skabel~2\main.cpp: In function `int main()': c:\docume~1\admini~1\mydocu~1\c__~1\skabel~2\main.cpp:33: `str' undeclared (first use this function) c:\docume~1\admini~1\mydocu~1\c__~1\skabel~2\main.cpp:33: (Each undeclared identifier is reported only once c:\docume~1\admini~1\mydocu~1\c__~1\skabel~2\main.cpp:33: for each function it appears in.)
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.