Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 17 su 17
  1. #11
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    746
    ad f() devi passare una stringa, e la variabile deve essere di tipo (char *)
    ES:
    char *prova = f("stringa");

  2. #12
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    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 ...

  3. #13
    Utente di HTML.it L'avatar di mamo139
    Registrato dal
    May 2005
    residenza
    Londra
    Messaggi
    841
    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 ...
    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,
    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

  4. #14
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Allora la storia e' un'altra. Fermati un attimo.

    Dove viene allocato lo spazio per la stringa b? Lo hai deciso?

  5. #15
    Utente di HTML.it L'avatar di mamo139
    Registrato dal
    May 2005
    residenza
    Londra
    Messaggi
    841
    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?
    mmhhh.... no...

    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

  6. #16
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Se allochi la memoria per la nuova stringa nella funzione chiamata e la liberi nella chiamante, allora il codice puo' essere simile a questo

    codice:
    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;
    }
    in cui la stringa originale contiene CIAO e la nuova stringa restituita dalla funzione contiene ?IAO

    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 ...

  7. #17
    Utente di HTML.it L'avatar di mamo139
    Registrato dal
    May 2005
    residenza
    Londra
    Messaggi
    841
    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!!!!


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.