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 1026 korisnika na forumu :: 20 registrovanih, 4 sakrivenih i 1002 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: 4channer, _Rade, amaterSRB, BSD, darkangel, DonRumataEstorski, draganl, goxin, hyla, JOntra, kinez88, kybonacci, m0nstrum_, Marko Marković, milenko crazy north, Mixelotti, Miškić, nenad81, radionica1, Valter071