ad f() devi passare una stringa, e la variabile deve essere di tipo (char *)
ES:
char *prova = f("stringa");
ad f() devi passare una stringa, e la variabile deve essere di tipo (char *)
ES:
char *prova = f("stringa");
Ah ... queste stringhe ...
Se la stringa che passi in entrata e' la stessa a cui vuoi assegnare il risultato, e' una operazione assolutamente inutile.
Ovvero, se passi la stringa
prova
alla funzione f, e ne modifichi il contenuto, non ha poi senso ricopiare il risultato in prova ...
nono... io ho una stringa a, la passo ad una funzione dove alla fine voglio ritrovarmi una striga b contenente il risultato che deriva dai calcoli che la funzione fa su a,Originariamente inviato da oregon
Ah ... queste stringhe ...
Se la stringa che passi in entrata e' la stessa a cui vuoi assegnare il risultato, e' una operazione assolutamente inutile.
Ovvero, se passi la stringa
prova
alla funzione f, e ne modifichi il contenuto, non ha poi senso ricopiare il risultato in prova ...
alla fine di tutto voglio avere due variabili distinte a e b!!!!
ora provo così char *prova = f("stringa"); cmq mi immagino che vada bene![]()
Allora la storia e' un'altra. Fermati un attimo.
Dove viene allocato lo spazio per la stringa b? Lo hai deciso?
mmhhh.... no...Originariamente inviato da oregon
Allora la storia e' un'altra. Fermati un attimo.
Dove viene allocato lo spazio per la stringa b? Lo hai deciso?
nn mi potresti scrivere un esempietto?? nn credo siano + di 4 righe di codice... ma almeno scopro dove mettere tutti gli appositi * o robe simili![]()
Se allochi la memoria per la nuova stringa nella funzione chiamata e la liberi nella chiamante, allora il codice puo' essere simile a questo
in cui la stringa originale contiene CIAO e la nuova stringa restituita dalla funzione contiene ?IAOcodice:char *f(char *s) { char *ret = (char *)malloc(strlen(s)+1); strcpy(ret, s); *ret='?'; return(ret); } int main() { char stringa[20]; strcpy(stringa, "CIAO"); char *nuovastringa = f(stringa); printf("%s\n", stringa); printf("%s\n", nuovastringa); free(nuovastringa); return 0; }
Lo spazio allocato per la nuova stringa a partire da quella originale e' allocato dinamicamente, mentre la stringa originale e' allocata nello stack del main.
Ma non e' l'unica soluzione ...
perfetto, questo programmino mi fa capire un po' meglio (a me che vengo dal php dove le variabili te le straprilli come ti pare) come funziano le stringhe in c...
grazie ora sperimento!!!!![]()
![]()