Hocu da napisem program koji otvara jedan tekstualni fajl i iz njega cita prvu i drugu liniju koje smesta u 2 promenljive. Sto se tice dela za otvaranje fajla nemam nikakvih problema, ali citanja linija i smestanja u promenljive imam. Interesuje me kako se uopste linije mogu izdvajati od ostalih.
Citanje linija iz tekstualnog fajla
Zaključano
Zakačeno
Idi do prve tehnicke knjizare, ili do biblioteke koja ima tehnicku literaturu.
Kupi/pozajmi knjigu koja se bavi bilo C ili C++ programiranjem, i procitaj poglavlje 3. ili je 4.
Gde ti objasne korak po korak kako se otvaraju fajlovi, i kako se citaju linije iz doticnih,
i kako se parsa tekst, i kako se tekst smesta u varijablu.
Ali posto sam poznat po tome da volim da pisem kriptican C kod, evo malog primera:
Naravno ista stvar moze da se napise na jos bar 30 razlicitih nacina. ovo bi bilo quick and dirty.
takodje imamo funkcije kao sto je fgets, fread ....
ako si na linuxu - man pages
ako si na windozima - MSDN
u svakom slucaju, nauci bar malkice da programiras, tj procitaj koju knjigu pre nego sto pitas pitanja koja su na nivou moje sestre koja je pocela da uci C pre mesec dana.
disclaimer, ovaj kod je napisan cisto onako napamet,
koristiti na svoju odgovornost.
[Ovu poruku je menjao blue dana 21.05.2002 u 02:53 PM GMT]
Kupi/pozajmi knjigu koja se bavi bilo C ili C++ programiranjem, i procitaj poglavlje 3. ili je 4.
Gde ti objasne korak po korak kako se otvaraju fajlovi, i kako se citaju linije iz doticnih,
i kako se parsa tekst, i kako se tekst smesta u varijablu.
Ali posto sam poznat po tome da volim da pisem kriptican C kod, evo malog primera:
Code:
#include <stdio.h>
#include <string.h>
int main()
{
FILE *fajl;
char **nesto; //pretpostavimo da nista nece biti duze od 1024 karaktera ...
char *nesto2[1024];
char *token;
char tmpbuffer[1024];
int ii = 0;
fajl = fopen("neki fajl", "r"); //otvori fajl za read only
*nesto = (char *) malloc (1024 * sizeof (char));
while (fgets(tmpbuffer, 1024, fajl)!= NULL)
{
if(strlen(nesto )- 1024 <= strlen(tmpbuffer))
nesto = (char *) realloc(nesto, 1024* sizeof (char));
strncat(nesto, tmpbuffer, 1024);
}
token = strtok(nesto, "\n")
while (token != NULL)
{
strcpy(nesto2[ii], token);
ii++;
token = strtok(NULL, "\n");
}
fprint(nesto2[0]);
fprint(nesto2[1];
fclose(fajl); //zatvori stream
return;
}
#include <stdio.h>
#include <string.h>
int main()
{
FILE *fajl;
char **nesto; //pretpostavimo da nista nece biti duze od 1024 karaktera ...
char *nesto2[1024];
char *token;
char tmpbuffer[1024];
int ii = 0;
fajl = fopen("neki fajl", "r"); //otvori fajl za read only
*nesto = (char *) malloc (1024 * sizeof (char));
while (fgets(tmpbuffer, 1024, fajl)!= NULL)
{
if(strlen(nesto )- 1024 <= strlen(tmpbuffer))
nesto = (char *) realloc(nesto, 1024* sizeof (char));
strncat(nesto, tmpbuffer, 1024);
}
token = strtok(nesto, "\n")
while (token != NULL)
{
strcpy(nesto2[ii], token);
ii++;
token = strtok(NULL, "\n");
}
fprint(nesto2[0]);
fprint(nesto2[1];
fclose(fajl); //zatvori stream
return;
}
Naravno ista stvar moze da se napise na jos bar 30 razlicitih nacina. ovo bi bilo quick and dirty.
takodje imamo funkcije kao sto je fgets, fread ....
ako si na linuxu - man pages
ako si na windozima - MSDN
u svakom slucaju, nauci bar malkice da programiras, tj procitaj koju knjigu pre nego sto pitas pitanja koja su na nivou moje sestre koja je pocela da uci C pre mesec dana.
disclaimer, ovaj kod je napisan cisto onako napamet,
koristiti na svoju odgovornost.
[Ovu poruku je menjao blue dana 21.05.2002 u 02:53 PM GMT]
Potpis
Za automatsko dobijanje Super Moderatorskog statusa na Elitesecurity forumima pritisnite Alt+F4
Ja ne bi bio ja ako ne bi malo podjebavao... Naime zasto na Windows-u bas "mora" da se koristi MSDN kad lepo postoji man i na Windows-u! :) Ode se lepo na www.cygwin.com, besplatno totalno za sve normalne programere, cak mozete i Xwindows da startujete sa twm, fvwm2, kde, blackbox...!
Potpis
Auuu ljudi, ubiste čoveka u pojam. Ako posle ovoga ne batali kompjutere zauvek, divim mu se.
Potpis
Taj lik nije batalio kompove, verujte mi:)
Potpis
Nemanja Jakovljevic
Zapravo je OVO najelegantnije rešenje gore navedenog problema:
za funkciju obradi_fajl() se obrati meni, uradiću je za flašu dobrog vina...
:)
Code:
#include <stdio.h>
#include "parser.h"
int main(int argc, char* argv[]) {
return obradi_fajl(argv[1]);
}
#include <stdio.h>
#include "parser.h"
int main(int argc, char* argv[]) {
return obradi_fajl(argv[1]);
}
za funkciju obradi_fajl() se obrati meni, uradiću je za flašu dobrog vina...
:)
Potpis
---
GNU's Not UNIX
GNU's Not UNIX