Dinamicki nizovi u C-u.

Dinamicki nizovi u C-u.

offline
  • Pridružio: 23 Sep 2005
  • Poruke: 6

Ako definisem
int *neki_niz;
i dodelim mu
neki_niz=malloc(20*sizeof(int));
Kako nakon unosa korisnika da odredim koliko je dug niz unetih brojeva?
Prakticno receno, treba mi ono sto u slucaju da radim sa promenljivima tipa char obavlja strlen()...
Pokusao sam sa sizeof(neki_niz)/sizeof(int) - delovalo mi logicno...heh Smile
I jos nesto. Ako u gornjem primeru unesem vise brojeva nego sto sam dodelio memorije, on ih, ipak, smesti negde i mogu ih indeksiranjem niza dobiti. Kako je to moguce!?! (npr. uneo sam 25 brojeva i bez problema pristupim clanu neki_niz[22], recimo.)



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • meka  Male
  • Počasni građanin
  • Pridružio: 06 Avg 2003
  • Poruke: 811
  • Gde živiš: Novi Sad / Vojvodina

Prvo, to su dva pitanja. Odgovor na prvo zavisi od toga kako unosiš brojeve. Recimo, ako -1 predstavlja poslednji u nizu, onda tražiš koji broj je -1, pri čemu posle malloc ide neki_niz[19] = -1. Problem sa ovim je što ne postoji vrednost int-a koja nije int (kao što je slučaj sa char vrednošću '\0'). Najbolje je da napraviš povezanu listu (taman si lepo naučio kako se to radi Smile).

Druga stvar je past end pristup. Ti možeš pristupati bilo kom elementu bez obrzira koliko si alocirao memorije. Stvar je u tome da ti malloc vrati samo adresu prvog elementa a ne zna gde je kraj. Dobra stvar je paziti na ovakve stvari, posebno pošto možeš da uletiš u prostor drugog programa (u tom slučaju moli boga da `program` nije neki modul čime bi mogao da sjebeš hw ako si dovoljno `srećan`).



offline
  • Pridružio: 21 Feb 2004
  • Poruke: 111
  • Gde živiš: Zrenjanin

dejancho ::Kako nakon unosa korisnika da odredim koliko je dug niz unetih brojeva?
Prakticno receno, treba mi ono sto u slucaju da radim sa promenljivima tipa char obavlja strlen()...

Nakon ne bi, a mogao bi da svaki unos niza vrsis preko funkcije koja bi vratila duzinu niza...

offline
  • Pridružio: 23 Jul 2006
  • Poruke: 118
  • Gde živiš: Beograd

Ne vidim potrebu za komplikovanjem.
Sigurno podatke ucitavas preko petlje, sto ce reci da imas promenljivu koja predstavlja index za "neki_niz". Samim tim imas i odgovor na pitanje. Ako citas podatke iz TXT fajla procedura je ista a i za binarne fajlove zbog nacina rada fread() f-je( mora preko petlje). Stvarno ne vidim u cemu je problem.

Ko je trenutno na forumu
 

Ukupno su 924 korisnika na forumu :: 34 registrovanih, 3 sakrivenih i 887 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: bankulen, Ben Roj, bojank, BSD, cikadeda, doktor1964, DPera, draggan, DragoslavS, gorican, ivicasimo, Krvava Devetka, kybonacci, Lazarus, m0nstrum_, Mi lao shu, mikrimaus, moldway, Motocar, Nemanja.M, nemkea71, panzerwaffe, Parker, Sir Budimir, slonic_tonic, sombrero, SR-3m, Srki94, Srle993, tubular, vaso1, wizzardone, Wrangler, šumar bk2