Pagina 1 di 1

[C] Stringhe

MessaggioInviato: dom dic 26, 2004 2:36 pm
da MaxPower
ho da un paio di giorni iniziato a programmare in c.
sto riscontrando alcune difficoltà ad usare le stringhe per mezzo di puntantore a carattare, in particolare nel passaggio di tale struttura come parametri in funzioni.
cerco di spiegarmi meglio con un esempio ...ho questo main ...

main
char *str1, *str2;
str1 = (char *) malloc(sizeof(char));
f1 (str1);
str2 = (char *) malloc (sizeof(char));
f2 (str1, str2)

alloco memoria per le stringhe nella funzione chiamante ...
f1 e f2 chiamano una stessa funzione f3...
f3 costruisce una stringa a partire dai caratteri digitati da tastiera per mezzo di un while, a cui aggiungo poi il terminatore '\0'.
f2 è pressoché identica a f1 tranne nel fatto che in f2 uso strcmp, affinché str1 sia diversa da str2.
la f1 va bene, la f2 no, ossia mi restituisce nel main una stringa con un carattere in più, uno strano simbolo, come se non avessi aggiunto il terminatore alla stringa str2.
ho utilizzato dei printf nelle diverse funzioni per vedere le stringhe create... str2 termina con un simbolo strano solo nel main...
mi interessa sapere se...
1. è corretto allocare memoria per la stringa solo nella funzione chiamante
2. per inizializzare una stringa, si può usare solo una funzione a void (quindi una procedura) che ha come parametro la stringa, oppure si può usare anche una funzione che punta a char e quindi farle restiuire una stringa con return...


grazie