Ciao ho visto ora gli aggiornamenti.
In effetti non ti ho detto qual'è il problema della strcat. Il
problema è che non verifica se le dimensioni delle stringhe sono
corrette. Del tipo se vuoi concatenare una roba lunga 3, che al
massimo tiene 10 caratteri, con una lunga 15 sicuramente vai fuori
dalla prima stringa. Dovresti fare così:
- prendi la prima stringa da concatenare
- vedi se c'è spazio sufficiente nella stringa dest (dest->size - dest->length)
- c'è spazio sufficiente?
SI: continua
NO: rialloca la stringa (non so se conviene raddoppiare la dimensione)
- concatena la stringa usando strcat
e ripeti così per tutte le stringhe. Alla fine del ciclo l'unico campo
della stringa che devi aggiornare è length (e va bene usando strlen),
mentre size si presuppone che tu lo aggiorni ogni volta che riallochi
la stringa. Sarebbe intelligente fare una funzione uStringRealloc
(uString *, int) che rialloca una stringa.
Non è sbagliato ma solo una curiosità: come mai sulla uStringRead alla
fine hai usato la getc?
Ho visto che su sourceforge non si vedono le email (nel senso non si
riesce a vedere cosa contiene l'email) perchè sono in html. Bene d'ora
in poi, se ci ricordiamo, solo formato testo!
|