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

Citanje odredjene linije iz fajla

[es] :: C programiranje :: Citanje odredjene linije iz fajla

[ Pregleda: 1731 | Odgovora: 10 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Alexandar_d
Alexandar

Član broj: 44699
Poruke: 103
*.as54.ze.bih.net.ba.



Profil

icon Citanje odredjene linije iz fajla02.04.2005. u 17:25

Imam ovaj code za citanje sadrzaja fajla:

Code:


#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

main()
{  
    int buffer[100];
        
    FILE *f;
    
    f = fopen ("c:\\fajl.txt", "r");

   while (fgets (broj, 100, f) != NULL)
   { 
   printf("%s", broj);
   }    
   
   getch();
}



Ovaj mi code cita sadrzaj fajla od pocetka do kraja i prikazuje ga na ekran, medjutim nije mi jasno kako da kada procita sve linije u fajlu, ispise odredjenu liniju u fajlu koju ja zelim?

P.S. Kada mi ispise odredjenu liniju u fajl, tu liniju, odnosno sadrzaj te linije treba da mi spremi u odredjenu varijablu ali posto ce se samo brojevi nalaziti u sadrzaju fajla, da li bez obzira na to moram korisiti funkciju atoi() da konvertujem sadrzaj u cijeli broj?

Hvala.

AleXandar
02.04.2005. u 17:25 

Buffy
Stanko Culaja
za sada sam nezaposlen!
Sipovo,Republika Srpska

Član broj: 45310
Poruke: 312
*.teol.net.

Sajt: www.sipovo.org


Profil

icon Re: Citanje odredjene linije iz fajla02.04.2005. u 17:51
Moje rjesenje:
Code:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int main()
{
    int i,k=1;
    FILE *dat;
    char string[100];
    printf("Unesite broj linije\n");
    scanf("%d",&i);
    dat=fopen("datoteka.txt","r");
    while(k<i)
        if (fgetc(dat)=='\n') ++k;
    for (i=0;;++i)
    {
        string[i]=fgetc(dat);
        if (string[i]==EOF || string[i]=='\n')
        {
            string[i]='\0';
            break;
        }
    }
    printf("%s",string);
    fclose(dat);
    system("pause");
    return 0;
}

Ovaj program cita znakove iz datoteke ,i kad naidje na znak '\n' povecava se brojac
za jedan sve dok ne dostigne vrijednost zeljene linije teksta.Kada dodje do linije
cita znak po znak iz datoteke i kopira ih u znakovni niz 'string'.Prestaje da kopira znakove
kada naidje na znak '\n' ili EOF.
Poslije program samo ispise sadrzaj niza na ekran.(To je sto je!)
Sto se tice drugog pitanja,naravno da nije potrebno koristiti funkciju itoa,
jer kad dodjes do odredjene linije(na gore objasnjeni nacin) onda samo koristis funkciju fscanf().NA primjer:
Code:

fscanf(dat,"%d",&a);

Nadam se da sam pomogao!
Pozdrav
SAMO DA RATA NE BUDE,
LUDILA MEDJU LJUDIMA,
VELIKI NUDE ZABLUDE,
PLASE NAS RAZNIM CUDIMA
I SVAKOJ BAJCI NAUDE,
DA RATA NE BUDE.

Djordje Balasevic
02.04.2005. u 17:51 

Alexandar_d
Alexandar

Član broj: 44699
Poruke: 103
*.as54ze.bih.net.ba.



Profil

icon Re: Citanje odredjene linije iz fajla10.04.2005. u 12:05
Pozdrav,
Ovaj tvoj code mi je pomogao, medjutim ne treba mi bas ovako pa sam ja malo pokusao da modifikujem pa mi nije uspjelo i evo me ovdje.
Naime, treba mi modifikovati onaj gore code koji sam napisao.
Ovaj code koji si ti napisao, on cita odredjenu liniju koju mu ja zadam, medjutim onaj gore moj code on procita CIJELI fajl i ispise sadrzaj cijelog fajla. E umjesto da on ispise sadrzaj cijelog fajla, meni treba da ispise odredjenu liniju. Uglavnom, treba da se nalazi jedna varijabla sadrzaj[100], i code koji cita fajl do kraja != NULL i ide redom, liniju 0 snimi u sadraj[0], liniju 1 snimi u sadrzaj[1] i sve tako do kraja != NULL. I onda ja mogu ispisat odredjenu liniju koja mi treba npr. printf("%s", sadrzaj[2]); a cijeli sadrzaj mogu ispisati petljom. Eto toliko nadam se da cete mi pomoci.
AleXandar
10.04.2005. u 12:05 

X Files
Vladimir Stefanovic
Pozarevac

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

Jabber: xfiles@elitesecurity.org
Sajt: www.antivari.com


Profil

icon Re: Citanje odredjene linije iz fajla10.04.2005. u 12:31
Necu ti modifikovati nikakav kod ali to se u praksi radi ovako:

Code:

// *netestirano* za Borland C++ Builder !!!
TStringList *SL = NULL;
try
{
   try
   {
      SL = new TStringList;
      SL->LoadFromFile( "C:\\file.txt" );

      // ovde mozes da koristis SL kako zelis, na primer:
      
      // SL->Count, je broj ucitanih linija 
      // SL->Strings[ Count-1 ], je poslednja linija
      // SL->Strings[ 0 ], je prva linija
      // SL->Strings[ 0 ][ 1 ], je prvo slovo prve linije
      // SL->Strings[ 0 ][ SL->Strings[ 0 ].Length() ], je zadnje slovo prve linije
      
      // ShowMessage( SL->Strings[ 1 ] ); // ispisuje drugu liniju
      
      // itd ...
      // Posle opet mozes da izmenis neke linije pa ih opet snimis:

      SL->SaveToFile( "C:\\file.txt" );
   }
   catch ( const Exception &e )
   {
      // doslo je do neke greske!!!
   }
}
__finally
{
   if ( SL )
      delete SL;
}


Sve ovo moze da se uradi i sa STL std::string klasom.

Ogranicavati *pamet* programa na fiksni buffer od 100 karaktera je
besmislica sa stanovista kvalitetnog programiranja.

FREEWARE
Di rečnik, v1.0.058 (srp-eng/eng-srp priručni rečnik)
http://www.antivari.com
10.04.2005. u 12:31 

X Files
Vladimir Stefanovic
Pozarevac

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

Jabber: xfiles@elitesecurity.org
Sajt: www.antivari.com


Profil

icon Re: Citanje odredjene linije iz fajla10.04.2005. u 12:33
Kao sto rekoh, kod je iz glave - netestiran:

Citat:

// SL->Strings[ Count-1 ], je poslednja linija


treba:

Citat:

// SL->Strings[ SL->Count-1 ], je poslednja linija


Verovatno ima nekih grescica.

FREEWARE
Di rečnik, v1.0.058 (srp-eng/eng-srp priručni rečnik)
http://www.antivari.com
10.04.2005. u 12:33 

Buffy
Stanko Culaja
za sada sam nezaposlen!
Sipovo,Republika Srpska

Član broj: 45310
Poruke: 312
*.teol.net.

Sajt: www.sipovo.org


Profil

icon Re: Citanje odredjene linije iz fajla10.04.2005. u 14:59
X files ,mozda Alexandar ne poznaje c++,vec samo c.
Dakle Aleksandre trebali kod u c-u ili c++-u.
Pozdrav!
SAMO DA RATA NE BUDE,
LUDILA MEDJU LJUDIMA,
VELIKI NUDE ZABLUDE,
PLASE NAS RAZNIM CUDIMA
I SVAKOJ BAJCI NAUDE,
DA RATA NE BUDE.

Djordje Balasevic
10.04.2005. u 14:59 

X Files
Vladimir Stefanovic
Pozarevac

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

Jabber: xfiles@elitesecurity.org
Sajt: www.antivari.com


Profil

icon Re: Citanje odredjene linije iz fajla10.04.2005. u 15:59
Verovatno si u pravu,

onda mu modifikuj tvoj kod tako da napravis novu f-ju
koja kao argument uzima broj linije koju treba ispisati.

FREEWARE
Di rečnik, v1.0.058 (srp-eng/eng-srp priručni rečnik)
http://www.antivari.com
10.04.2005. u 15:59 

Buffy
Stanko Culaja
za sada sam nezaposlen!
Sipovo,Republika Srpska

Član broj: 45310
Poruke: 312
*.teol.net.

Sajt: www.sipovo.org


Profil

icon Re: Citanje odredjene linije iz fajla10.04.2005. u 17:30
Code:

#include <stdio.h>
#include <malloc.h>
int main()
{
    char *tekst[100];
    FILE *dat=fopen("datoteka.txt","r");
    int l,k;
    for (l=0;l<=99;l++)
    {
        tekst[l]=(char*)malloc(100);
        k=0;
        while(5>3)
        {
            tekst[l][k]=fgetc(dat);
            if (tekst[l][k]=='\n' || tekst[l][k]==EOF) {tekst[l][k]='\0';break;}
            k++;
        }
        if (tekst[l][k]==EOF) break;
    }
    printf("%s\n",tekst[2]);    
    system("pause");
    return 0;
}

Nadam se da ovo trazis!
Jedina mana ovog programa sto baca memoriju!
Na primjer ako linija ima 3 znaka ostalih 97 bajtova ostaje ne iskoristeno.Isto tako
ako linija ima vise od 100 znakova program moze da pukne.
Dakle,program bi se mogao unaprijediti!
Pozdrav!!!:)

[Ovu poruku je menjao Buffy dana 10.04.2005. u 18:35 GMT+1]
SAMO DA RATA NE BUDE,
LUDILA MEDJU LJUDIMA,
VELIKI NUDE ZABLUDE,
PLASE NAS RAZNIM CUDIMA
I SVAKOJ BAJCI NAUDE,
DA RATA NE BUDE.

Djordje Balasevic
10.04.2005. u 17:30 

Alexandar_d
Alexandar

Član broj: 44699
Poruke: 103
*.as54ze.bih.net.ba.



Profil

icon Re: Citanje odredjene linije iz fajla10.04.2005. u 17:32
Treba mi C code, znaci jos jednom da ponovim, treba mi da liniju 1. ispise u npr. sadrzaj[1], liniju 2. u sadrzaj[2] i sve tako do kraja fajla a na kraju da ja mogu ispisati liniju koju ja zelim ovako: printf("Sadrzaj linije 5= %d", sadrzaj[5]);
Puno hvala.

AleXandar
10.04.2005. u 17:32 

Buffy
Stanko Culaja
za sada sam nezaposlen!
Sipovo,Republika Srpska

Član broj: 45310
Poruke: 312
*.teol.net.

Sajt: www.sipovo.org


Profil

icon Re: Citanje odredjene linije iz fajla10.04.2005. u 19:19
Pa to sam i napisao u proslom postu!
SAMO DA RATA NE BUDE,
LUDILA MEDJU LJUDIMA,
VELIKI NUDE ZABLUDE,
PLASE NAS RAZNIM CUDIMA
I SVAKOJ BAJCI NAUDE,
DA RATA NE BUDE.

Djordje Balasevic
10.04.2005. u 19:19 

Alexandar_d
Alexandar

Član broj: 44699
Poruke: 103
*.as54ze.bih.net.ba.



Profil

icon Re: Citanje odredjene linije iz fajla11.04.2005. u 09:34
Citat:
Buffy: Pa to sam i napisao u proslom postu!



Ja kada sam citao, tog posta nije bilo, radilo se o par minuta :-).

P.S. Pogledaj vrijeme pisanja mog proslog, i tvog predproslog posta.

Sad je sve ok, puno hvala.
AleXandar
11.04.2005. u 09:34 

[es] :: C programiranje :: Citanje odredjene linije iz fajla

[ Pregleda: 1731 | Odgovora: 10 ]

Postavi temu Odgovori

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