Poslao: 13 Mar 2008 15:03
|
offline
- [M]Ucenik
- Novi MyCity građanin
- 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.
|
|
Poslao: 13 Mar 2008 15:51
|
offline
- igor86
- Stručni saradnik
Web programiranje
- Pridružio: 24 Maj 2006
- Poruke: 1633
|
[M]Ucenik ::... takmicenje nailazi ....
Jesi gledao fopen(); i ostalu gardu fukcija vezanih za manipulaciju sa fileovima.
|
|
|
|
Poslao: 13 Mar 2008 15:55
|
offline
- N1k0l4
- Prijatelj foruma
- 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.
|
|
|
|
Poslao: 13 Mar 2008 18:42
|
offline
- [M]Ucenik
- Novi MyCity građanin
- 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
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
|
|
|
|
Poslao: 13 Mar 2008 20:30
|
offline
- N1k0l4
- Prijatelj foruma
- 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 ....
|
|
|
|
Poslao: 13 Mar 2008 20:43
|
offline
- [M]Ucenik
- Novi MyCity građanin
- 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
|
|
|
|
Poslao: 13 Mar 2008 21:54
|
offline
- N1k0l4
- Prijatelj foruma
- 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.
|
|
|
|
Poslao: 13 Mar 2008 22:24
|
offline
- [M]Ucenik
- Novi MyCity građanin
- 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?
|
|
|
|
Poslao: 13 Mar 2008 22:27
|
offline
- bobby
- Administrator
- 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)
|
|
|
|
Poslao: 13 Mar 2008 22:49
|
offline
- [M]Ucenik
- Novi MyCity građanin
- 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?
|
|
|
|