Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    142

    [C] Lettura di più interi da tastiera senza INVIO

    ciao a tutti, dovrei leggere vari numeri da tastiera e metterli in un array.

    per esempio:

    Inserisci 5 numeri
    l'utente scrive: 4 3 10 2 6 (invio)

    e questi 5 numeri vengono salvati in un array.

    Non posso usare scanf(). fgets dovrebbe servire allo scopo ma mi sfugge come.

    grazie

  2. #2
    Perché non puoi usare scanf?
    Comunque con fgets ti basta acquisire la stringa inserita in un buffer, e quindi effettuarne il parsing "rompendo" la stringa in corrispondenza degli spazi (puoi, ad esempio, sostituire gli spazi con dei NUL) e trasformando ogni sottostringa in numero con atoi.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    142
    Originariamente inviato da MItaly
    Perché non puoi usare scanf?
    Comunque con fgets ti basta acquisire la stringa inserita in un buffer, e quindi effettuarne il parsing "rompendo" la stringa in corrispondenza degli spazi (puoi, ad esempio, sostituire gli spazi con dei NUL) e trasformando ogni sottostringa in numero con atoi.
    ho fatto tutt otranne quello in grassetto, non ho capito come si fa

  4. #4
    Per la prima parte ti può aiutare la funzione strtok; per la successiva puoi usare la normale atoi, come già detto.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    142
    ho risolto grazie mille..

    x completezza metto la funziona come l'ho fatta e sembra funzionare

    Codice PHP:
    char Buffer[30];
        
    int i,j;
        
    j=0;
        
    char tmp;
        
    printf("Inserisci i numeri separati da uno spazio\n\n");
        for (
    i=0i<9i++)
        { 
    printf "Inserisci la riga numero %d:  ",i+);
          
    fgets Buffer,30,stdin );
              
    tmp strtok (Buffer," ");
              while ((
    tmp != NULL) && (j<9)) {
                    if (
    atoi(tmp))
                       {
                        
    Tav[i][j] = atoi(tmp);
                        *
    Nvuote--;
                       }
                 
    tmp strtok (NULL" ");
                 
    j++;
              }
          
    j=0;
        }

    c'è ancora qualcosa non va.. ma quel passaggio che chiedevo funziona.. grazie mille

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 © 2024 vBulletin Solutions, Inc. All rights reserved.