Scanf mutipla

di il
3 risposte

Scanf mutipla

Volevo acquisire un numero da tastiera e salvarlo in due variabili una int e una stringa:
printf("Inserisci il numero");
scanf("%d", &dato);
scanf("%s", barcode)

ma facendo cosi non funziona.
Intanto Grazie

3 Risposte

  • Re: Scanf mutipla

    Ciao, cosa intendi per "salvarlo in due variabili" ??
    La scanf prende in input un dato dallo standard input che solitamente e' la tastiera; tu usi due volte la scanf quindi prenderai due input. Comunque attento ad usare le scanf "in modo sequenziale", e' piu' corretto in questo modo:
    
    int   dato;
    char barcode[MAX_BUFF];
    
    printf("Inserisci un numero: ");
    scanf("%d%*c",&dato);                 // leggo anche il carriage return.
    scanf("%s",barcode);
    
    Il perche' e' meglio in questo modo lo trovi in libri che trattano la programmazione in C.
    Spiega meglio cosa intendi quando dici "salvarlo in due variabili".
    Saluti, netburst.
  • Re: Scanf mutipla

    Intendevo dire che: nella var intera dato avevo il mio barcode int pronto per essere inserito in una lista, e nella var barcode avevo il dato stringa pronto per calcolare il check digit!!
    MAX_BUFF l'ho definito a 255!

    Non c'è nessun errore nella compilazione però il programma si inchioda dopo l'inserimento del dato!!!


    Grazie milllle!
  • Re: Scanf mutipla

    Ok, ora ho capito cosa intendi per "salvarlo in due variabili", per fare cio' non si deve chiamare 2 volte la scanf() ma una volta sola.
    Inoltre dire che il programma si inchioda e basta non e' di nessun aiuto a chi potrebbe / vorrebbe aiutarti, devi postare il sorgente per intero, indicando il punto in cui riscontri problemi (di compilazione o logici che siano).
    Comunque per fare questo "doppio salvataggio" fai cosi':
    
    #include <stdio.h>
    #include <stdlib.h>
    
    #define MAX_BUFF  (255)
    
    int main(void) {
      int  dato;
      char barcode[MAX_BUFF];
    
    
      printf("# Dato: ");
      fgets(barcode,sizeof(barcode) - 1,stdin);
      dato = atoi(barcode);
    
      printf("dato      => %d\n",dato);
      printf("barcode => %s\n",barcode);
      return 0;
    }
    
    Potresti evitare di includerti tutta la stdlib per usare solamente l'atoi comunque non credo ti importi piu' di tanto.
    Saluti, netburst.
Devi accedere o registrarti per scrivere nel forum
3 risposte