[Pluto-devel] Come leggere un file in C

Germano Rizzo manomano@ciaoweb.it
Tue, 24 Apr 2001 22:17:53 +0200


Ciao!
    ora, ho un problema (beh, sennò non scrivevo). Ho un puntatore a un file
in cui è contenuto del testo ASCII, di cui non so e non ho modo di sapere la
dimensione. Il fatto è che è un descrittore di pipe, quindi non proprio un
file. Bene, ho la necessità di portare questo pari pari in una stringa
(cioè, il solito array di char), e non so come fare. Finora ho fatto (notare
che è un programma che usa le glib)

...
gchar tk[2];
gchar *content="";
FILE *tmp;
...
tmp=popen(command,"r");
...
while(fread(&tk,1,1,tmp))
{
    tk[2]='\0';
    g_strconcat(content,tk,NULL);
}
...
pclose(tmp);
...

    Sorvolo i dettagli di questo pezzo, che funziona, ma ha lo sgradevole
difetto di occupare senza rilasciarli una mezza dozzina di mega (non so
come, pare incredibile) e mi fa quindi sospettare che la strada non sia
proprio questa.
    Qualcuno mi può aiutare? Forse la domanda pare cretina, ma sono
autodidatta in C, e non trovo nulla da nessuna parte. E non posso usare
fread() con valori maggiori di 1 perché non so la lunghezza massima, e mi si
incasina tutto!
    AIUTO!
        Mano :)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Questa non è una lettera da mettere da
 parte con leggerezza.Bisogna scagliarla
 via con grande forza.
        --Dorothy Parker
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Germano Rizzo - manomano@ciaoweb.it
http://mano.interfree.it
http://www.bdp.it/~veee0001/
http://gnomermind.sourceforgenet
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~