Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    569

    c - uso di scanf e puntatori

    Ciao a tutti.

    char *s;

    printf("Inserire Stringa: ");
    scanf("%s", .... );


    Dato questo codice, come faccio a dare a s il valore inserito da tastiera?

    Grazie

  2. #2
    esiste una grande differenza tra gli operatori * e &, ad ogni modo devi usare scanf("%s", &s)

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Prima di tutto devi allocare lo spazio sufficiente all'input in questo modo

    s = (char *)malloc(200*sizeof(char));

    e poi utilizzi il puntatore

    printf("Inserire Stringa: ");
    scanf("%s", s);

    P.S. Attenzione X-sPiKe_iT ... s e' gia' un puntatore ...

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    (doppia)

  5. #5
    O al massimo definisci prima un vettore di tot elementi

    #define size 100

    int main()
    {
    int vettore[size];
    int *s = vettore ;

    // e solo ora puoi fare

    printf("Inserire Stringa: ");
    scanf("%s", s);
    }

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    569
    questa istruzione

    s = (char *)malloc(200*sizeof(char));

    equivale ad una dichiarazione del tipo:

    char s[200];

    ???

    Quale sarebbe meglio usare? Che differenze ci sono?

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Con la scritta

    char s[200];

    allochi staticamente lo spazio per la stringa, con la malloc, allochi lo spazio dinamicamente.

    Non c'e' una versione migliore o peggiore. Sono due modi di fare la stessa cosa e dipende da tante altre cose nel programma se scegliere la prima o la seconda forma ...

    E se lo chiedi, vuol dire che ti mancano ancora molti concetti di base del linguaggio. Ti consiglio di affrontare le differenze tra le due scritture solamente quando avrai acquisito tali concetti.

    @P4nico ... l'array deve essere di char e non di int ... e il puntatore e' inutile ...

    codice:
    #define SIZE 100
    
    int main()
    {
      char s[SIZE];
    
      printf("Inserire Stringa: ");
      scanf("%s", s);
    
      return 0;
    }

  8. #8
    Originariamente inviato da oregon

    @P4nico ... l'array deve essere di char e non di int ... e il puntatore e' inutile ...

    codice:
    #define SIZE 100
    
    int main()
    {
      char s[SIZE];
    
      printf("Inserire Stringa: ");
      scanf("%s", s);
    
      return 0;
    }
    Il che però significa che non esiste altro modo che dare una dimensione anche se dinamica ad un puntatore oltre alla malloc?

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da P4nico
    Il che però significa che non esiste altro modo che dare una dimensione anche se dinamica ad un puntatore oltre alla malloc?
    Non ho capito cosa vuoi dire ...

  10. #10
    Tu prima hai dato una dimensione al puntatore usando la funzione di malloc o sbaglio? perchè dopo quando l'hai spiegata ho capito questo.
    E volevo sapere se quello era l'unico modo per dare 1 dimensione ad 1 puntatore.

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.