[prog-it] Re: Mailreader, need help :-(

  • From: "z3lig" <mailmaxi@xxxxxxxxx>
  • To: <prog-it@xxxxxxxxxxxxx>
  • Date: Sat, 5 Jan 2002 21:51:05 +0100

From: "andrea medeghini" <andreamedeghini@xxxxxxxxxxxxx>
Subject: [prog-it] Re: Mailreader, need help :-(

> > Si', ma ci sono vari problemi: il primo e' che non conosci a priori la
> > lunghezza di una riga della mail, e per me e' gia' un problema leggerla
> > dal file; le tre stringhe che devo avere alla fine vanno memorizzate in
un
> > array del tipo "char *row[3];", per poterle inserire nella lista a
> > colonne, e ognuna di esse deve essere allocata e liberata dopo
> > l'inserimento; inoltre non riesco a gestire le eccezioni come, ad
esempio,
> > i subject vuoti ("Subject: \n")...
>
> provo a darti qualche idea (che potrebbe essere sbagliata)
>.......

l'idea di Andrea mi sembra ottima,
cmq se i dati li leggi da un file puoi sempre,
prima di allocare il buffer in memoria  , leggere
quanto e' lungo il file e regolarti di conseguenza.....
....inoltre se memorizzi tutti i token con il metodo delle strutture
ti basta vedere cosa hai memorizzato dopo il token "Subject:"
se hai il token "Data:" (sto sparando a caso non ho presente i campi del tuo
file)
o se la struttura e' finita il campo "oggetto" dell'email sara' vuoto
se avrai altre parole non lo sara'......
......boh forse non ho aggiunto niente di interessante :-\

cmq facci sapere

ciao

z3lig

PS esempio preso dall' help del vecchio borland c 3.0
per leggere la lunghezza di un file, credo vada bene anche
per linux perche' usa funzioni ansi C

==============begin esempio===============
#include <stdio.h>

long filesize(FILE *stream);

int main(void)
{
   FILE *stream;

   stream = fopen("MYFILE.TXT", "w+");
   fprintf(stream, "This is a test");
   printf("Filesize of MYFILE.TXT is %ld bytes\n", filesize(stream));
   fclose(stream);
   return 0;
}

long filesize(FILE *stream)
{
   long curpos, length;

   curpos = ftell(stream);
   fseek(stream, 0L, SEEK_END);
   length = ftell(stream);
   fseek(stream, curpos, SEEK_SET);
   return length;
}

=================end esempio================




Other related posts: