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

Problem sa pokazivacima, memorijom, i jos necim...

[es] :: C/C++ programiranje :: Problem sa pokazivacima, memorijom, i jos necim...

[ Pregleda: 1565 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mile-bg
student
beograd

Član broj: 273395
Poruke: 3
*.dynamic.isp.telekom.rs.



Profil

icon Problem sa pokazivacima, memorijom, i jos necim...21.11.2010. u 13:32 - pre 163 meseci
Ako ima neko voljan da pomogne oko sledeceg problema:

Cilj mi je da napravim program koji m3u pretvara u pls ili neki drugi.Da bih to ucinio napravio sam klasu numera i od nje niz( numera moja[50]). Svaka numera sadrzi podatke o imenu, nazivu pesme, adresi i trajanju.Nazalost, potrebno je alocirati memoriju za nazive tako da su privatne clanice klase pokazivaci tipa char (char* ImeNumere....).
Kada pokusam da ispisem sadrzaj niza numera preko for petlje program uvek izbacuje poslenji unesen string.
Problem je verovatno kod pokazivaca jer je on na poslednjem.Da li neko mozda ima ideju kako da dodjem do prvog naziva, odnosno kako da ispisem ovaj niz.
Hvala unapred.

[Ovu poruku je menjao mile-bg dana 21.11.2010. u 14:48 GMT+1]
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

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

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Problem sa pokazivacima, memorijom, i jos necim...21.11.2010. u 19:07 - pre 163 meseci
Dao si premalo pravih detalja.

Koje okruzenje/kompajler koristis za razvoj?
(ovo je bitno da bismo znali koje biblioteke gotovih klasa mogu da se koriste, stl, mfc, vcl)

Da li je ovo neki zadatak koga treba da uradis za skolu/faks ili je prosto tvoj neki tvoj projekat?
(ovo je bitno da bismo znali da smeju da se koriste gorepomenute biblioteke ili se treba zadrzati na skolskom nivou: implementacija liste, alokacija, pokazivaci... )

Najbolje pokazi kod (ili problematicni deo) koji si do sada uradio.




Pretpostavljam da su ovo formati o kojima govoris:

PLS
http://en.wikipedia.org/wiki/PLS_(file_format)

M3U
http://en.wikipedia.org/wiki/M3U
 
Odgovor na temu

mile-bg
student
beograd

Član broj: 273395
Poruke: 3
*.dynamic.isp.telekom.rs.



Profil

icon Re: Problem sa pokazivacima, memorijom, i jos necim...21.11.2010. u 19:28 - pre 163 meseci
Program je projekat sa faksa, koriste se formati koje si napomenuo (m3u, pls ).Programiram u Visual Studio2008, okruzenje c++.
Code:

class numera
{
private:
    int trajanje;
    char *ImeNumere;
    char *ImeIzvodjaca;
    char *Adresa;
public:
    void upis(char x[], char y[],char z[],int n)
    {
        
        int r=strlen(x);
        int l=strlen(y);
        int j=strlen(z);
        ImeNumere = (char*) malloc (r+1);
        ImeIzvodjaca = (char*) malloc (l+1);
        Adresa = (char*) malloc (j+1);
        trajanje =n;
        ImeNumere=x;
        ImeIzvodjaca=y;
        Adresa=z;
        
    }
        void ispis()
    {
        
        cout<<trajanje<<endl;
        cout<<ImeNumere<<endl;
        cout<<ImeIzvodjaca<<endl;
        cout<<Adresa<<endl;
    }
};

void main()
{
    int p=0,trajanje;
    char pocetna[20],temp[100],adresa[100],n[9];
    
    numera moja[50];
    
    ifstream ulaz("ulaz.m3u");
    
        ulaz.getline (temp,30);
    
    while(!ulaz.eof())
    {
        ulaz.get(n,9);
        ulaz.get(n,4);          // ovo je samo uzimanje trajanja numere
        trajanje=atoi(n);
        
        ulaz.getline(temp,100);      //ovde bi trebalo odvojiti ime numere od izvodjaca i posebno ih proslediti ali pojednostavio sam radi citljivosti
        
        ulaz.getline(adresa,100);
        
        moja[p].upis(temp,temp,adresa,trajanje);

        p++;
                for(int i=0;i<p;i++) moja[i].ispis();// ovde nastaje problem******

    }


***** Pri izvrsavanju programa na izlazu se ispisuju samo naslovi numera i imena poslednje numere koje su ucitane, dok kod se vremena trajanja menjaju, sto pretpostavljam znaci da je problem oko pokazivaca.Jel znas mozda o cemu se radi?


[Ovu poruku je menjao X Files dana 21.11.2010. u 20:49 GMT+1]
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

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

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Problem sa pokazivacima, memorijom, i jos necim...21.11.2010. u 19:57 - pre 163 meseci
Pogledacu sutra detaljnije... a za sada samo pitanje, zasto ti je ispis smesten UNUTAR while petlje? Zar nisi planirao da ispis (kao provera) ide nakon citanja fajla?

 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
212.200.65.*



+2789 Profil

icon Re: Problem sa pokazivacima, memorijom, i jos necim...21.11.2010. u 21:23 - pre 163 meseci
Citat:
mile-bg
Code:
ImeNumere = (char*) malloc (r+1);
// ...
ImeNumere=x;


Druga naredba poništava dejstvo prve (osim što zauzet prostor ostaje zarobljen do kraja izvršavanja programa, tzv. curenje) jer pokazivač ImeNumere pokazuje na adresu na koju pokazuje x i ne pokazuje više na zauzeti prostor funkcijom malloc, koji je bio rezultat te funkcije.

Moja preporuka ti je da koristiš klasu string. Šaljem dva ekvivalentna koda, pa ti vidi šta je lakše.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
Prikačeni fajlovi
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
212.200.65.*

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Problem sa pokazivacima, memorijom, i jos necim...22.11.2010. u 06:07 - pre 163 meseci
Evo, Nedeljko se bas potrudio... :)


Takodje se slazem da koristis klasu string, pod uslovom da je dozvoljena, s obzirom na didakticke ciljeve ovog zadatka.
 
Odgovor na temu

mile-bg
student
beograd

Član broj: 273395
Poruke: 3
*.dynamic.isp.telekom.rs.



Profil

icon Re: Problem sa pokazivacima, memorijom, i jos necim...22.11.2010. u 06:51 - pre 163 meseci
@ X FILES
Kod mene je van while-a, zeznuo sam ga kopirao ovde..
Ne moras da se mucis samo je potrebno drugacije alocirati i dodeliti vrednost, kao sto je i Nedeljko napisao, ali hvala na trudu.
@ Nedeljko
Hvala puno covece, prvo resenje ce mi sasvim odgovarati.Pozdrav.
 
Odgovor na temu

[es] :: C/C++ programiranje :: Problem sa pokazivacima, memorijom, i jos necim...

[ Pregleda: 1565 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

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