Datoteke pomoc.

1

Datoteke pomoc.

offline
  • Pridružio: 05 Mar 2008
  • Poruke: 13

Pozdrav.
Ljudi nikako ne mogu da skontam datoteke. sve citam iz razlicitih turtoriala pa mi se sve mesa.
Pa mi treba pomoc da mi neko malo objasni, takmicenje nailazi a ja datoteke nemam pojma.
Objasnite mi otvaranje i zatvaranje datoteka (mada ovo nekako i znam), i kako da ulazne podatke smestim u ZAD.UL a izlazne u ZAD.IZ ?
Ako imate neke primere dobro ce mi doci.

Da li moze da podatke koje se unose smestim na adresu npr, a,b,c,niz[] (preko scanf) , a onda samo ako se trazi da se nalaze u datoteci ZAD.UL samo fprintf?
I objasnite mi finese, kao npr. unesi br. N i onda u N redova upisi te brojev (jedan ispod drugog).



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • igor86  Male
  • Stručni saradnik
    Web programiranje
  • Pridružio: 24 Maj 2006
  • Poruke: 1633

[M]Ucenik ::... takmicenje nailazi .... Smile
Jesi gledao fopen(); i ostalu gardu fukcija vezanih za manipulaciju sa fileovima.



offline
  • Software developer
  • Pridružio: 06 Sep 2005
  • Poruke: 3800
  • Gde živiš: Beograd

bilo bi lakse da das neki primer tacnos ta ti treba
evo ovako, ukratko
Otvaranje:
FILE* f = fopen("podaci.txt", "w");
umesto ovog w moze da ti stoji r -za citanje datoteke ili a- za dodavanje u datoteku(bez brisanja postojecih podataka), a ovo w -upisivanje u datoteku, ako s enesto nalazilo u njoj pre toga, nestace, tj. izbrisace se.
za rad u binarnom rezimu koristi se slovo b , dodaje se cini mi se ispred w,r ili a.

Ukoliko otvaranje nije uspelo, fopen vraca NULL, i mozes da proveris preko if-a da li je uspelo ili nije...
if(f==NULL)....

Citanje iz datoteke.
Znaci otvorio si datoteku, i u njoj imas recimo 5 nekih brojevak oje treba da smestis u niz.
koristis
fscanf(f, "%d", &a[i]);
gde ti je prvi argument ime , tj. pokazivac koji si ranije deklarisao, i ovo dvoje kao i kod scanf-a
Ukoliko si koristio neku petlju recimo while(1) -beskonacna petlja, postavljas upit na kraju
if (feof(f)) break;
tj. pitas da li je doslo do kraja fajla.
zatvaranje:
fclose(datoteka);
Pozeljno je zatvoriti svaku otvorenu datoteku.
Ukoliko treba da citas karaktere koristis getc tj. putc za upis karaktera u neki fajl....

Citat:kako da ulazne podatke smestim u ZAD.UL a izlazne u ZAD.IZ ?
Podatke smestis u zad.ul i otvoris ga naredbom fopen, iz njega "vadis" sta ti treba, ako su brojevi onda naredbom fscanf(ime fajla, "%d", &ime promenljive)
A kad upisujes u izlaznu, kao da pises na standardni izlaz samo koristis fprintf

E, da, ukoliko je preusmeren izlaz, znaci da rezultati ne idu na monitor vec u neki fajl, a treba da obavestis korisnika za neku gresku, koristis naredbu:
fprintf(stderr,"Greska ");
ovaj stderr ti sluzi za stampanje na standardni izlaz.

offline
  • Pridružio: 05 Mar 2008
  • Poruke: 13

N1k0l4 hvala puno. sve sam skontao!
Malo sam se vise skoncentriso na citanje i sve mi je jasno kao dan... hehe al sam srecan Smile

E samo nisam jos gledao kako da neki niz karaktera koji se nalazi u ulaznoj datoteci koji je sa belim znacima dodam nekoj promenljivoj npr. niz? pokusao sam sa fgets ali pravi prob..

kad ocu da mi se u izlaznoj datoteci ispisuje neki niz u N redova jel moze
fprint(izlaz, "%d%c", a[i],'\n')?

zamisli da mi je ovo ulaz.
3 3
3 2 2
3 1 5
6 6 6
6
ovo u 1. redu je dimenija matrice, onda sledeca tri reda je matrica, a 6 je neko br. npr. sa kojim se porede elementi matrice. kako da ovo lep dodelim promenljivim

offline
  • Software developer
  • Pridružio: 06 Sep 2005
  • Poruke: 3800
  • Gde živiš: Beograd

sa fgets ne mozes da uzmas po karakter, koristi getc naredbu

Citat:
kad ocu da mi se u izlaznoj datoteci ispisuje neki niz u N redova jel moze
fprint(izlaz, "%d%c", a[i],'\n')?

kucas:
fptintf(izlaz, "%d\n", a[i]);

Citat:zamisli da mi je ovo ulaz.
3 3
3 2 2
3 1 5
6 6 6
6
ovo u 1. redu je dimenija matrice, onda sledeca tri reda je matrica, a 6 je neko br. npr. sa kojim se porede elementi matrice. kako da ovo lep dodelim promenljivim

Pa znaci otvori datoteku, i redom u programu uzimaj vrednost, znaci prvo ces imati
fscanf(ulaz,"%d", &red);
fscanf(ulaz,"%d", &kolona);

pa ces imati petlju i onda ces u petlji imati ta dva brojaca, znaci devet clanova i stavis fscanf(ulaz, "%d", &a[i][j]);
ili sta ti vec treba....
i na kraju nekoj promenljivoj dodelis tu zadnji vrednost, i onda dalje normalno poredjenje kao da si na standardnom ulazu ....

offline
  • Pridružio: 05 Mar 2008
  • Poruke: 13

E samo mi reci kako se unose znakovi ako su sa belim znakom, iz datoteke naravno... kako se eof zapisuje kad se koristi datoteka... itd napisi mi nesto o tome

offline
  • Software developer
  • Pridružio: 06 Sep 2005
  • Poruke: 3800
  • Gde živiš: Beograd

Ne razumem ovo za bele znakove?
Ukoliko citas brojeve on bele razmake ne vidi, tj. beli razmaci razdvajaju brojeve, a kad citas tekst vidi ih normalno kao bele razmake.

EOF je skracenica za End of file, i to ne moras ti nista da naznacis, sam ce prepoznati kad je kraj datoteke.

offline
  • Pridružio: 05 Mar 2008
  • Poruke: 13

nisi me razume bas.. npr. kako da " ovaj tekst" dodelim nekoj promenljivi, tj kako da ga unesem sa belim znacima?

offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Beli znak... mislis na razmak (space)?
Moras da napravis parser za tu liniju teksta, a da ti delimiter bude razmak (hex. 20)

offline
  • Pridružio: 05 Mar 2008
  • Poruke: 13

da mislim na space.
kako se to pravi i sta je to?
i jel kad imam u toj datoteci neki br. jel njega citam kao broj ili ga citam kao char a smestam ga kao int?

Ko je trenutno na forumu
 

Ukupno su 1013 korisnika na forumu :: 33 registrovanih, 3 sakrivenih i 977 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: Alibaba1981, babaroga, Boris BM, CikaKURE, darkangel, ds69, GandorCC, Georgius, gomago, ILGromovnik, jackreacher011011, krasta, marsovac 2, mercedesamg, mile33, Milos ZA, milutin134, mkukoleca, moldway, mrav pesadinac, Panter, panzerwaffe, powSrb, procesor, raketaš, shone34, Singidunumac, Srle993, stegonosa, Tila Painen, Toper, Vlada78, voja64