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

Citanje odredjene linije iz fajla

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

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

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Alexandar_d
Alexandar

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



+7 Profil

icon Citanje odredjene linije iz fajla02.04.2005. u 17:25 - pre 231 meseci
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
 
Odgovor na temu

Buffy
Stanko Culaja
Sipovo, BiH

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



Profil

icon Re: Citanje odredjene linije iz fajla02.04.2005. u 17:51 - pre 231 meseci
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
 
Odgovor na temu

Alexandar_d
Alexandar

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



+7 Profil

icon Re: Citanje odredjene linije iz fajla10.04.2005. u 12:05 - pre 231 meseci
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
 
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 odredjene linije iz fajla10.04.2005. u 12:31 - pre 231 meseci
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.
 
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 odredjene linije iz fajla10.04.2005. u 12:33 - pre 231 meseci
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.
 
Odgovor na temu

Buffy
Stanko Culaja
Sipovo, BiH

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



Profil

icon Re: Citanje odredjene linije iz fajla10.04.2005. u 14:59 - pre 231 meseci
X files ,mozda Alexandar ne poznaje c++,vec samo c.
Dakle Aleksandre trebali kod u c-u ili c++-u.
Pozdrav!
 
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 odredjene linije iz fajla10.04.2005. u 15:59 - pre 231 meseci
Verovatno si u pravu,

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

Buffy
Stanko Culaja
Sipovo, BiH

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



Profil

icon Re: Citanje odredjene linije iz fajla10.04.2005. u 17:30 - pre 231 meseci
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]
 
Odgovor na temu

Alexandar_d
Alexandar

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



+7 Profil

icon Re: Citanje odredjene linije iz fajla10.04.2005. u 17:32 - pre 231 meseci
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
 
Odgovor na temu

Buffy
Stanko Culaja
Sipovo, BiH

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



Profil

icon Re: Citanje odredjene linije iz fajla10.04.2005. u 19:19 - pre 231 meseci
Pa to sam i napisao u proslom postu!
 
Odgovor na temu

Alexandar_d
Alexandar

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



+7 Profil

icon Re: Citanje odredjene linije iz fajla11.04.2005. u 09:34 - pre 231 meseci
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
 
Odgovor na temu

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

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

Postavi temu Odgovori

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