•Sycron
Client obisnuit
Karma: -141
Deconectat
Mesaje: 66
|
|
« : Martie 13, 2008, 15:14:20 » |
|
Sunt un pic nedumerit... Nu ştiu ce funcţie să folosesc ... am auzit că în ultima versiune de g++ , cea mai rapida citire&scriere se face cu streamuri .... In BC 3.1 însă , cea mai rapidă astfel de funcţie este freopen (după fopen şi streamuri) ... Ce diferenţe de utilizare sunt între fopen şi freopen ? Spre exemplu : fopen FILE * fişier; fişier=fopen("blabla.bla", "w"); fprintf (fişier, "Test");
freopen freopen ("blabla.bla","w",stdout); //şi apoi înloc de fscanf şi fprintf se folosesc printf şi scanf ... de ce ? printf ("Test");
|
|
|
Memorat
|
|
|
|
•Florian
|
|
« Răspunde #1 : Martie 13, 2008, 16:08:19 » |
|
Din cate stiu eu, e doar o diferenta de sintaxa (cea cu freopen fiind mai comoda). Sa ma corecteze cineva daca gresesc.
|
|
|
Memorat
|
|
|
|
•filipb
|
|
« Răspunde #2 : Martie 13, 2008, 19:01:06 » |
|
Eu folosesc freopen pentru ca e foarte comod, si toti cei pe care ii cunosc folosesc freopen. Doar o singura linie la inceput si dupa aceea citirea se face exact ca si cum ai citi de la tastatura.
|
|
|
Memorat
|
|
|
|
•timotei21
Strain
Karma: 2
Deconectat
Mesaje: 5
|
|
« Răspunde #3 : Martie 13, 2008, 19:55:06 » |
|
da... numa ca daca ai nevoie de consola in program nu ii bine sa foloses freopen pt ca itzi foloseste numa fisieru...
|
|
|
Memorat
|
|
|
|
•skyel
|
|
« Răspunde #4 : Martie 13, 2008, 20:13:29 » |
|
da... numa ca daca ai nevoie de consola in program nu ii bine sa foloses freopen pt ca itzi foloseste numa fisieru...
stderr
|
|
|
Memorat
|
|
|
|
•byndrsn
Client obisnuit
Karma: 19
Deconectat
Mesaje: 72
|
|
« Răspunde #5 : Martie 13, 2008, 21:44:41 » |
|
In general este o idee buna sa printezi debugging stuff in stderr.
|
|
|
Memorat
|
|
|
|
•rEbyTer
|
|
« Răspunde #6 : Martie 13, 2008, 22:10:47 » |
|
Doar o singura linie la inceput si dupa aceea citirea se face exact ca si cum ai citi de la tastatura. Mulţumesc pentru răspuns. Mi-a fost de ajutor. (ai +1 karma)
|
|
|
Memorat
|
|
|
|
•toni2007
|
|
« Răspunde #7 : Martie 13, 2008, 22:15:02 » |
|
si fisierele deschise cu freopen nu mai trebuiesc inchise... e enervant sa stai sa le inchizi tot timpu si sa iei 0 puncte daca nu le inchizi (vezi fopen)
|
|
|
Memorat
|
|
|
|
•rEbyTer
|
|
« Răspunde #8 : Martie 13, 2008, 22:17:13 » |
|
... wow ms . nu ştiu ce mă făceam dacă nu menţionai asta...
În general folosesc citirea/scrierea cu streamuri şi dacă nu închid vreun fişier nu spune nimica.... La fel şi cu freopen...
|
|
|
Memorat
|
|
|
|
•cos_min
|
|
« Răspunde #9 : Martie 13, 2008, 22:18:39 » |
|
... wow ms . nu ştiu ce mă făceam dacă nu menţionai asta...
În general folosesc citirea/scrierea cu streamuri şi dacă nu închid vreun fişier nu spune nimica.... La fel şi cu freopen...
Cu freopen nu mai trebuie inchise.
|
|
|
Memorat
|
vid...
|
|
|
•rEbyTer
|
|
« Răspunde #10 : Martie 13, 2008, 22:31:37 » |
|
probabil ai citit printre rânduri ... am spus că atât la citirea/scrierea cu streamuri cât şi la citirea/scrierea cu freopen nu trebuie să mai inchid fişierul...(cel puţin e opţional)
|
|
|
Memorat
|
|
|
|
•Florian
|
|
« Răspunde #11 : Martie 14, 2008, 09:03:19 » |
|
Cu freopen nu mai trebuie inchise.
Banuiesc ca nici cu fopen, nu?
|
|
|
Memorat
|
|
|
|
•cos_min
|
|
« Răspunde #12 : Martie 14, 2008, 09:27:32 » |
|
Cu freopen nu mai trebuie inchise.
Banuiesc ca nici cu fopen, nu? Cu fopen ar fi indicat sa le inchizi. FILE *fin = fopen("tralala.in","r"); ....... fclose(fin)
|
|
|
Memorat
|
vid...
|
|
|
•flo_demon
Strain
Karma: 20
Deconectat
Mesaje: 46
|
|
« Răspunde #13 : Martie 14, 2008, 10:08:08 » |
|
Trebuie inchise fisierele doar fiindca e posibil ca tu sa fi scris ceva si sa nu se salveze in output. Nu se scrie automat in fisier cand zici fprintf(...), ci se scrie intr-un buffer. Ar fi culmea ca scrierea pe disc sa fie la fel de rapida ca cea in RAM. Si cand inchizi fisierul printre altele se da si un flush la buffer, si se scrie tot ce era de scris in fisier. Daca vrei sa dai flush automat, foloseste fflush() http://www.thinkage.ca/english/gcos/expl/c/lib/fflush.html
|
|
|
Memorat
|
Marines don't die! They go to hell and regroup
|
|
|
•byndrsn
Client obisnuit
Karma: 19
Deconectat
Mesaje: 72
|
|
« Răspunde #14 : Martie 14, 2008, 18:07:58 » |
|
Credeam ca buferul e flushed automat cand programul termina normal (de obicei nu inchid fisierele).
|
|
|
Memorat
|
|
|
|
•svalentin
|
|
« Răspunde #15 : Martie 14, 2008, 19:31:07 » |
|
Bufferele de IO sunt golite automat cand se termina programul. Atat freopen cat si fopen au acelasi comportament. Un "good practice" este sa iti inchizi handle-urile de fisiere (inclusiv stdout redirectionat catre fisier)
|
|
|
Memorat
|
|
|
|
•cplusplus
Strain
Karma: 0
Deconectat
Mesaje: 1
|
|
« Răspunde #16 : Martie 16, 2008, 21:21:04 » |
|
personal folosesc ifstream si ofstream
|
|
|
Memorat
|
|
|
|
|