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

Kako procitati samo odredjenu liniju iz fajla?

[es] :: C/C++ programiranje :: Kako procitati samo odredjenu liniju iz fajla?

[ Pregleda: 5708 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

istrazivac

Član broj: 284
Poruke: 117
*.verat.net



Profil

icon Kako procitati samo odredjenu liniju iz fajla?16.07.2001. u 20:24 - pre 277 meseci
Pozdrav svima.Imam mali problem.Ovako,otvorim fajl za citanje(pomoci ifstream objekta) i ceo njegov sadrazaj premestim u ,recimo char bufer[1000000] .Sada ja mogu da prikazem ceo fajl,odnosno ceo sadrzaj bafera,ali meni treba samo odredjena linija koja pocinje odredjenom recju.Znaci recimo imam char [5] = "pera",i zelim da izvucem samo tu liniju neku char promenljivu koja pocinje u fajlu sa 'pera'.Nadam se da razumete sta mi treba.Stao mi mozak totalno,probao sam hiljadu stvari,ali nista nije kako treba,ako nekome pada na pamet pomagajte,puno hvala unapred.
 
Odgovor na temu

Vojislav Milunovic

Član broj: 25
Poruke: 2117
*.verat.net



+1 Profil

icon Re: Kako procitati samo odredjenu liniju iz fajla?16.07.2001. u 20:33 - pre 277 meseci
Koliko ja vidim ti oces da linuji koja pocinje sa "pera" prikazes?
ok to nije problem idemo lagano i prosto.

Code:


#include<stdio.h>
#include<string.h>

const char *word = "pera";

int main(){
 FILE *stream;
 char data[4096];
 stream = fopen("/path/to/file","r");
 while ( fgets(data,4096,stream) != NULL )
    if ( strncmp(word,data,strlen(word)) == 0 )
       break;
 fclose(stream);
 printf("%d",data);
}


Ovaj program nalazi liniju u fileu koja pocinje sa "pera" i kad je nadje zavrsava sa pretragom,zatvara file i stampa datu liniju na ekran.
 
Odgovor na temu

istrazivac

Član broj: 284
Poruke: 117
*.verat.net



Profil

icon Re: Kako procitati samo odredjenu liniju iz fajla?17.07.2001. u 02:39 - pre 277 meseci
Predator,hvala ,nemas pojma koliko si mi pomogao,ja se zajebavam vec ceo dan i noc sa ovim,a ti si mi resio problem zacas.Jos jednom hvala ti puno!!!
 
Odgovor na temu

istrazivac

Član broj: 284
Poruke: 117
*.verat.net



Profil

icon Re: Kako procitati samo odredjenu liniju iz fajla?17.07.2001. u 04:01 - pre 277 meseci
Pozdrav svima i jos jedno pitanjce za predatora i sve ostale.Ovaj prethodni kod sto si mi dao super radi kao sto sam rekao vec,samo mi treba jos jedna funkcijakoja radi nesto slicno ovoj prethodnoj.Nalazi odredjeni string u fajlu i od sledece linije,znaci od linije ispod nadjenog stringa, do kraja fajla smesta u bafer.Ne znam da li sam dobro objasnio,ali ajd ovako na primer,ovo je sadrzaj neko fajla:

<bof>
dhsfjsdhfjkdhkjfsjd
sdhfjsdkfjshdjkfhkdsjf
pera
mika
sdfsdfjdfkljsdkljfskld
sdjkfsjdfkdfjklfsjkdf
jskdfjsdlfjkdfjsdfdklj
<eof>

Meni sada treba sve ispod "pere",znaci pocev sa linojom mika pa do kraja fajla.Zato sto ja imam recimo peru kao odrednicu,ali mika ne mora da bude tu nego moze da bude laza,ali pera je tu sigurno uvek i moram prema njemu da se orijentisem.Hvala unapred jos jednom za pomoc,i nadam se da ne zamaram nikoga,posebno ne predatora,ali sta cu,koristim uglavnom MFC klase za rad sa fajlovima i ostalim glupostima,a sada mi zatrebalo nesto iz ovih standardnih biblioteka.
 
Odgovor na temu

Vojislav Milunovic

Član broj: 25
Poruke: 2117
*.verat.net



+1 Profil

icon Re: Kako procitati samo odredjenu liniju iz fajla?17.07.2001. u 10:16 - pre 277 meseci
Mozes to da izvedes sa mmap i strstr.Evo primera :

Code:

#include<sys/types.h>
#include<sys/mman.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<unistd.h>
#include<string.h>

const char *word = "pera";

int main(){
 void *addr;
 int fd;
 struct stat buf;
 char *tmp;
 
 stat("/path/to/file",&buf);
 fd = open("/path/to/file",O_RDONLY);
 addr = mmap(0,buf.st_size,PROT_READ,MAP_PRIVATE,fd,0);

 if (   (tmp = strstr(addr,word) ) == NULL ){
   printf("String nije nadjenn");
   close(fd);
   munmap(addr,buf.st_size);
 }

 tmp +=strlen(word);
 printf("%s",tmp);

// sada od tmp pa do pojave  \0 imas trazeni buffer

 close(fd);
 munmap(addr,buf.st_size);
}





[Ovu poruku je menjao predator dana 07-17-2001 u 09:19 AM GMT]
 
Odgovor na temu

kajla
Milorad Janković
Beograd

Član broj: 445
Poruke: 909
*.InfoSky.Net



+2 Profil

icon Re: Kako procitati samo odredjenu liniju iz fajla?17.07.2001. u 16:53 - pre 277 meseci
Moze jedno pod pitanje?
Zanima me kao da procitam samo odredjenu liniju fajla-recimo 100-tu liniju? Znaci treba da otvorim fajl postavim file pointer na pocetak stote linije i ocitam tu linuju.

poz.
 
Odgovor na temu

istrazivac

Član broj: 284
Poruke: 117
*.verat.net



Profil

icon Re: Kako procitati samo odredjenu liniju iz fajla?17.07.2001. u 17:20 - pre 277 meseci
Predator jos jednom ti puno hvala opet si mi puno puno skratio trud!!! Ali sada sam se vec navadio,pa izvini,ali moram samo jos neku stvar da te pitam,posto sam vec rekao da se ne snalazim sa standardnim bibliotekama,a vidim da ih ti super poznajes.Ovako,interesuje koja je sintaksa zadavanja relativne putanje fajla,jer sam sve prekopao i nisam uspeo da nadjem,i probao sam sve zivo,ali nije uspelo.Recimo imam putanju do fajla "c:dir1dirfile.txt" ,a ja hocu da zadam relativno putanju, recimo nesto tipa "\dir1\...\file.txt" da ga on sam potrazi,znam da je to moguce posto mi jedna MFC funkcija daje mogucnost otvaranja fila kada joj se kao parametar prosledi ta relativna putanja,ali nigde nema primera kako to izgleda,a bas mi treba ocajnicki,jer nemogu drugacije da izvedem jednu stvar.I drugo i poslednje kako se "sabiraju" dva stringa,odnosno imam recimo: char prvi[5] = "pera" i char drugi[5] = "mika" i char treci[],koj treba da bude jednak "mikapera",pa ako znas koja je ta fukcija koja kopira prvi char i na njegov kraj dodaje drugi.Ako nemas vremena ili te mrzi da pises,O.K je,jer sam te iovako dosta vec smorio.U svakom slucaju ti mnogo hvala jer si mi vec dosta pomogao.
 
Odgovor na temu

kajla
Milorad Janković
Beograd

Član broj: 445
Poruke: 909
*.InfoSky.Net



+2 Profil

icon Re: Kako procitati samo odredjenu liniju iz fajla?17.07.2001. u 17:55 - pre 277 meseci
Sto se tice spajanja stringa tu ti je strcat() (imas i strncat())
znaci:

strcat(deststring,srcstring);
Ali ako imas vise stringova da spojis mozes da koristis sprintf():

sprintf(dest,"%s%s%s",str1,str2,str3);

Kad kazes relativna putanja mislis u odnosu na tekuci dir?
ako na to mislis dovoljno je da zadas "dir1\dir2\file".

poz.

[Ovu poruku je menjao kajla dana 07-17-2001 u 05:58 PM GMT]
 
Odgovor na temu

Vojislav Milunovic

Član broj: 25
Poruke: 2117
*.verat.net



+1 Profil

icon Re: Kako procitati samo odredjenu liniju iz fajla?17.07.2001. u 21:38 - pre 277 meseci
ZA ovu 100 liniju mozes kao i gore da vadis liniju po liniju i da ubacis dodatnu promenljivu koju ces uvek testirati i povecavati za 1.Kad dodjes do 100 kazem mu samo break; i imas svoju liniju u buf ;o)
 
Odgovor na temu

Vojislav Milunovic

Član broj: 25
Poruke: 2117
*.verat.net



+1 Profil

icon Re: Kako procitati samo odredjenu liniju iz fajla?17.07.2001. u 21:39 - pre 277 meseci
Sto se tice putanja tipa ../../dir/./dir3/file ;o) to je na OSu da raspozna gde se taj file nalazi na fs tako da nemoj da se time zaludjujes jedino ako neces da pises svoj fs i kompletan interfejs za manipulaciju sa njim ;o))
 
Odgovor na temu

kajla
Milorad Janković
Beograd

Član broj: 445
Poruke: 909
*.InfoSky.Net



+2 Profil

icon Re: Kako procitati samo odredjenu liniju iz fajla?18.07.2001. u 10:34 - pre 277 meseci
Citat:
predator je napisao:
ZA ovu 100 liniju mozes kao i gore da vadis liniju po liniju i da ubacis dodatnu promenljivu koju ces uvek testirati i povecavati za 1.Kad dodjes do 100 kazem mu samo break; i imas svoju liniju u buf ;o)


Eh, pa to i nije neko resenje, ja bi bre nesto tipa postavim pointer na 100-tu liniju ali bez petlje, vec nesto kao fseek() (ako je to uopste moguce).

poz.
 
Odgovor na temu

Vojislav Milunovic

Član broj: 25
Poruke: 2117
*.verat.net



+1 Profil

icon Re: Kako procitati samo odredjenu liniju iz fajla?18.07.2001. u 11:20 - pre 277 meseci
Pa i sam znas da je 100 linija ona posle 99 \n.Tako da sa lseek() nemozes tacno da odredis gde ce se zavrstiti 99ti \n.Jedino resenje predstavlja ova fja. (fgets) koja iz buffera uzima do pojave \0 ili \n.
 
Odgovor na temu

[es] :: C/C++ programiranje :: Kako procitati samo odredjenu liniju iz fajla?

[ Pregleda: 5708 | Odgovora: 11 ] > FB > Twit

Postavi temu Odgovori

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