Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Datoteke C pomoc!!!

[es] :: C/C++ programiranje :: C/C++ za početnike :: Datoteke C pomoc!!!

[ Pregleda: 1861 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Gorex
Srbija

Član broj: 290200
Poruke: 16
37.19.108.*



Profil

icon Datoteke C pomoc!!!26.05.2013. u 20:56 - pre 131 meseci

Ja bih molio ljude koji znaju da mi objasne sto pokazivac, kad uzme "adresu" od fopen("podaci.txt","w"); ne prikazuje na izlazu istu adresu, nego prikazuje adresu uvecanu za 96 bajta. Do sad nisam radio sa datotekama, radio sam sa strukturama i uvek kad sam radio sa pokazivacima, radio sam tako sto predam adresu neke promenljive, niza ili strukture pokazivacu itd.. Ali ovde ne znam sta se desava... I zbog cega se radi sa pokazivacima? Unapred hvala...

FILE *f=fopen("podaci.txt","w");

// printf("%d,%d" ,fopen("podaci.txt","r"),f );
 
Odgovor na temu

Goran Rakić
Beograd

Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: Datoteke C pomoc!!!26.05.2013. u 21:02 - pre 131 meseci
Ako znaš da je FILE struktura definisana u zaglavlju stdio.h, i da fopen() unutar funkcije alocira takvu jednu strukturu, popuni njena polja i vrati pokazivač na nju, da li su stvari jasnije?

Citat:

Upon successful completion fopen() return a FILE pointer. Otherwise, NULL is returned and errno is set to indicate the error.

FILE is a structure containing information about a file.

http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4901
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Datoteke C pomoc!!!26.05.2013. u 21:20 - pre 131 meseci
Ako sam dobro shvatio pitanje:
Citat:

FILE *f=fopen("podaci.txt","w");
// printf("%d,%d" ,fopen("podaci.txt","r"),f );

... tebe zanima zašto ovo dvoje obojeno crvenom bojom NEMA ISTU vrednost prilikom ispisa, a očekivano je da jeste isto jer je "f=fopen()".

Zato što ta dva fopen()-a nisu ista stvar... Svako novo otvaranje fajl streama je NOVO otvaranje, nije ISTO otvaranje :)


Pokušaj ovo:
Code:

FILE *f=fopen("podaci.txt","w");
printf("%d,%d,%d" , fopen("podaci.txt","r"), fopen("podaci.txt","r"), f );

... trebalo bi da su sve tri vrednosti različite.
 
Odgovor na temu

Gorex
Srbija

Član broj: 290200
Poruke: 16
37.19.108.*



Profil

icon Re: Datoteke C pomoc!!!26.05.2013. u 22:05 - pre 131 meseci
Pa i nisu bas najjasnije :D Znam da je FILE struktura koja je defiisana u zaglavlju <stdio.h> , ali ne znam da li sam te dobro razumeo ovo posle sto si napisao. Jel sama funkcija fopen() alocira jednu takvu strukturu i kako to vrati pokazivac, ako moze malo detaljnije. Hvala...


Citat:
Goran Rakić:
Ako znaš da je FILE struktura definisana u zaglavlju stdio.h, i da fopen() unutar funkcije alocira takvu jednu strukturu, popuni njena polja i vrati pokazivač na nju, da li su stvari jasnije?

Citat:

Upon successful completion fopen() return a FILE pointer. Otherwise, NULL is returned and errno is set to indicate the error.

FILE is a structure containing information about a file.


Dobro si shvatio pitanje :D

Citat:
X Files: Ako sam dobro shvatio pitanje:

... tebe zanima zašto ovo dvoje obojeno crvenom bojom NEMA ISTU vrednost prilikom ispisa, a očekivano je da jeste isto jer je "f=fopen()".

Zato što ta dva fopen()-a nisu ista stvar... Svako novo otvaranje fajl streama je NOVO otvaranje, nije ISTO otvaranje :)



 
Odgovor na temu

Burgos
Nemanja Borić
Amazon Web Services
Berlin

Član broj: 12484
Poruke: 1947
..178.212.adsl.dyn.beotel.net.

Sajt: stackoverflow.com/users/1..


+480 Profil

icon Re: Datoteke C pomoc!!!26.05.2013. u 22:55 - pre 131 meseci
Prvi put kada pozoveš fopen, dobiješ jednu strukturu. Kada drugi put pozoveš fopen dobiješ drugu strukturu, i tako za svaki fajl.

Ti ovde ne uzimaš adresu fopen funkcije:

Code:
printf("%d,%d" ,fopen("podaci.txt","r"),f );


već ispisuješ vrednost onoga što ti fopen vrati.

Za svaki otvoreni fajl, alocira se nova struktura na nekom novom mestu i vrati se pokazivač na nju.
 
Odgovor na temu

Gorex
Srbija

Član broj: 290200
Poruke: 16
77.243.22.*



Profil

icon Re: Datoteke C pomoc!!!27.05.2013. u 18:03 - pre 131 meseci

Ja koliko sam procitao da ukoliko funkcija otvori datoteku, vrati ce adresu strukture pokazivacu, a ako je pokazivac NULL onda otvaranje nije uspelo ili nema te datoteke na disku...

Ako fopen alocira strukturu u memoriji onda bi trebalo da je struktura tipa FILE, posto je i pokazivac, pokazivac na strukturu tipa FILE, dal sam u pravu? :D


Citat:
Burgos: Prvi put kada pozoveš fopen, dobiješ jednu strukturu. Kada drugi put pozoveš fopen dobiješ drugu strukturu, i tako za svaki fajl.

Ti ovde ne uzimaš adresu fopen funkcije:

Code:
printf("%d,%d" ,fopen("podaci.txt","r"),f );


već ispisuješ vrednost onoga što ti fopen vrati.

Za svaki otvoreni fajl, alocira se nova struktura na nekom novom mestu i vrati se pokazivač na nju.
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Datoteke C pomoc!!!

[ Pregleda: 1861 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.