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

Citanje iz tekstualnog fajla - Pitanje???

[es] :: C/C++ programiranje :: Citanje iz tekstualnog fajla - Pitanje???

[ Pregleda: 3309 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Mix5
Milos Djuric
STE, Asseco
Jagodina

Član broj: 14282
Poruke: 332
217.24.27.*



Profil

icon Citanje iz tekstualnog fajla - Pitanje???16.06.2006. u 23:42 - pre 217 meseci
Imam funkciju koja prima pokazivac na fajl a vraca pokazivac na string koji u glavnom programu koristim za smestanje u strukturu od koje pravim listu. Fajl se sastoji iz vise redova.

Funkcija treba da se pozove onoliko puta koliko fajl ima redova teksta. Moje pitanje je kako da pri sledecem pozivu funkcije ona cita sedeci red teksta i kako da znam koliko puta vrsim pozivanje funkcije. Znam da trebam da citam podatke iz fajla dok ne dodjem do kraja fajla ali ne znam kako to da napisem.

Code:

char *CitajIzFajla(FILE *file)
{
     char *inf;
     inf = malloc(MAX_DUZ);
     fgets(inf, MAX_DUZ, file);
     return inf;
}
 
Odgovor na temu

z@re
Zarko Bulatovic
Split

Član broj: 29849
Poruke: 443
*.cmu.carnet.hr.



+25 Profil

icon Re: Citanje iz tekstualnog fajla - Pitanje???17.06.2006. u 01:12 - pre 217 meseci
Kad otvoris datoteku preko fopen();, kreira se lokator koji sluzi za pozicioniranje lokacije za iscitavanje i upisivanje. Taj lokator mozes rucno micat pomocu fseek(); funkcije. Uglavnom, kad fgets iscita jednu liniju, automatski se lokator mice na drugu liniju. Tvoju funckiju mozes zvat na nacin :

Code:

char *linija;
if(!feof(ulazna)) linija = CitajIzFilea(ulazna);




Q: HSP56 Micromodem nece da radi kompjuter ga prepozna a kad treba da se konektujem nece ne daje ni znaka zivota. u cemu je problem.

A: Crko mozda od grmljavine mozda od spanaca. Uglavnom baci ga u WC solju jako povuci vodu. Skupi 5e i uzmi drugi i ne postuj temu na pogresno mesto.
 
Odgovor na temu

Mix5
Milos Djuric
STE, Asseco
Jagodina

Član broj: 14282
Poruke: 332
217.24.27.*



Profil

icon Re: Citanje iz tekstualnog fajla - Pitanje???17.06.2006. u 01:55 - pre 217 meseci
Mislis

Code:

char *linija;
while(!feof(ulazna)) linija = CitajIzFilea(ulazna);


Meni je ovako logicnije.
 
Odgovor na temu

Mali Misha
Mihajlo Anđelković
NBGD

Član broj: 79396
Poruke: 379
*.powernet.bg.

ICQ: 195487525
Sajt: cpptea.com


+1 Profil

icon Re: Citanje iz tekstualnog fajla - Pitanje???17.06.2006. u 06:49 - pre 217 meseci
Čitanje fajla liniju po liniju... i pamćenje. Preporučujem da funkcija koja uzima liniju vraća pokazivač na NULL ukoliko se došlo do kraja fajla.

Code:
char* getline(FILE *fp)
{
    // ... pokusaj citanja fajla i pisanje null na kraj ucitanog stringa

    if(feof(fp) && <string prazan>) return 0;

    // ...
}

int main(void)
{
    char *line;
    FILE *fp;

    // ...

    while( line = getline(fp) )
    {
        // ...
    }

    // ...

}

Inače ako štediš na memoriji, bolje bi bilo da napraviš bafer maksimalne dužine u funkciji koja poziva getline i onda u getline prvo učitaš liniju u taj bafer. Dužina učitavane linije će biti poznata u trenutku kada završiš sa njenim čitanjem. Nakon toga napraviš novi string tačno te dužine plus 1, zbog NULL na kraju, i prepišeš bafer u taj string.
Ipak se ++uje.
 
Odgovor na temu

tosa
上海, 中国

Član broj: 1811
Poruke: 1342
*.ubisoft.com.cn.

ICQ: 14293955
Sajt: https://github.com/milost..


+48 Profil

icon Re: Citanje iz tekstualnog fajla - Pitanje???17.06.2006. u 08:30 - pre 217 meseci
Ja bih ti savetovao da staviš pokazivač na string kao argument funkcije, kao i dužinu istog, a da
menadžment memorije radiš u ostatku programa - mnogo je razloga za ovakav pristup.
 
Odgovor na temu

z@re
Zarko Bulatovic
Split

Član broj: 29849
Poruke: 443
*.cmu.carnet.hr.



+25 Profil

icon Re: Citanje iz tekstualnog fajla - Pitanje???17.06.2006. u 19:44 - pre 217 meseci
Citat:
Mix5: Mislis

Code:

char *linija;
while(!feof(ulazna)) linija = CitajIzFilea(ulazna);


Meni je ovako logicnije.


Ma da, typo. Treba while.

Q: HSP56 Micromodem nece da radi kompjuter ga prepozna a kad treba da se konektujem nece ne daje ni znaka zivota. u cemu je problem.

A: Crko mozda od grmljavine mozda od spanaca. Uglavnom baci ga u WC solju jako povuci vodu. Skupi 5e i uzmi drugi i ne postuj temu na pogresno mesto.
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Citanje iz tekstualnog fajla - Pitanje???17.06.2006. u 20:05 - pre 217 meseci
Pazi kad sam juce 2 min gledao u cemu je razlika izmedju te dve linije (tj. da vidim na sta se
primedba odnosi), i nisam uspeo da uocim da je na jednom mestu 'if' a na drugom 'while'... :)
 
Odgovor na temu

n1tr0
Freelance
Cortanovci / NS

Član broj: 55279
Poruke: 465
80.93.231.*

Sajt: grubicv.iz.rs


+2 Profil

icon Re: Citanje iz tekstualnog fajla - Pitanje???17.06.2006. u 23:05 - pre 217 meseci
Citat:
X Files: Pazi kad sam juce 2 min gledao u cemu je razlika izmedju te dve linije (tj. da vidim na sta se
primedba odnosi), i nisam uspeo da uocim da je na jednom mestu 'if' a na drugom 'while'... :)

Auuuuu...
Pa dobar si ti...
Ja sam proveo oko 10min i jos krenuo da kucam poruku da pitam koja je razlika, a kada sam citirao... :)
 
Odgovor na temu

z@re
Zarko Bulatovic
Split

Član broj: 29849
Poruke: 443
*.cmu.carnet.hr.



+25 Profil

icon Re: Citanje iz tekstualnog fajla - Pitanje???18.06.2006. u 02:54 - pre 217 meseci
I meni je trebalo jedno par puta usporedbe da skuzim svoj lapsus ;)



Q: HSP56 Micromodem nece da radi kompjuter ga prepozna a kad treba da se konektujem nece ne daje ni znaka zivota. u cemu je problem.

A: Crko mozda od grmljavine mozda od spanaca. Uglavnom baci ga u WC solju jako povuci vodu. Skupi 5e i uzmi drugi i ne postuj temu na pogresno mesto.
 
Odgovor na temu

Mix5
Milos Djuric
STE, Asseco
Jagodina

Član broj: 14282
Poruke: 332
217.24.27.*



Profil

icon Re: Citanje iz tekstualnog fajla - Pitanje???19.06.2006. u 04:44 - pre 217 meseci
Ovo mi je samo kod za testiranje, nebi da kacim kod onoga sto pravim, ima mnogo.

Zasto mi ne radi citanje iz fajla... ne mogu vise da se mucim...

Code:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define MAX_DUZ 200

typedef struct elementListe
{
        char *infixizraza;
        struct elementListe *next;
}       ElementListe;

typedef struct lista
{
        struct elementListe *prvi;
        struct elementListe *poslednji;       
}       Lista;

ElementListe *NapraviElement(char *infix)
{
             ElementListe *e;
             e = malloc(sizeof(ElementListe));
             e -> next = NULL;
             e -> infixizraza = malloc(strlen(infix)+1);
             strcpy(e -> infixizraza, infix);
             return e;
}

Lista *NapraviListu()
{
      Lista *l;
      l = malloc(sizeof(Lista));
      l-> prvi = NULL;
      l-> poslednji = NULL;
      return l;
}

void DodajUListu(Lista *l, ElementListe *e)
{
     if(!l->prvi) l->prvi = e;
     else      l->poslednji->next = e;
     l->poslednji = e;
              
}

void IspisiListu(Lista *l)
{
     ElementListe *pom = l->prvi;
     while(pom){puts(pom->infixizraza);pom = pom->next;}
}

int DuzinaListe(Lista *l)
{
     int br=0;
     ElementListe *pom = l->prvi;
     while(pom){br++;pom = pom->next;}
     return br;
}

void UpisiUFajl(Lista *l, char imefajla[1000])
{
     FILE *fajl;
     fajl = fopen(imefajla,"a+");
     ElementListe *pom = l->prvi;
     while(pom){
     fprintf(fajl,"%s\n",pom->infixizraza);
     pom = pom->next;
     }
     fclose(fajl);
}

void CitajIzFajla(Lista *l, char imefajla[1000])
{
     FILE *fajl;
     char *inf;
     if ((fajl = fopen(imefajla,"r")) == NULL)
     {
     printf("Fajl ne postoji !\n");return 0;
     }
     fajl = fopen(imefajla,"r");
     while(feof(fajl))
     {
     inf = malloc(MAX_DUZ);
     fgets(inf, MAX_DUZ, fajl);
     DodajUListu(l,NapraviElement(inf));
     }  
}

main () 
{
        Lista *lista;
        int a=0;
        char ime[1000];
        
        lista = NapraviListu();
        printf("%d\n", DuzinaListe(lista));
        
        printf("Unesite ime fajla: ");scanf("%s", ime);
        CitajIzFajla(lista,ime);
  
        IspisiListu(lista);
        printf("%d", DuzinaListe(lista));

        system("PAUSE");
        
}
 
Odgovor na temu

Igor Gajic

Član broj: 93194
Poruke: 747
*.ADSL.neobee.net.



+987 Profil

icon Re: Citanje iz tekstualnog fajla - Pitanje???19.06.2006. u 10:40 - pre 217 meseci


Code:

     if ((fajl = fopen(imefajla,"r")) == NULL)
     {
     printf("Fajl ne postoji !\n");return 0;
     }


     fajl = fopen(imefajla,"r");       //!!!!!!!!!!!!!!!!!!!!!!


Zar vec nisi otvorio fajl?

I

Code:

 while(feof(fajl))


bi trebalo da bude

Code:

 while(!feof(fajl))
 
Odgovor na temu

[es] :: C/C++ programiranje :: Citanje iz tekstualnog fajla - Pitanje???

[ Pregleda: 3309 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

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