Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    152

    [C] input da tastiera

    Scusate per la banalità della domanda che sicuramente è già stata posta ma non riesco a trovare nessun post ne una soluzione su google.

    sto facendo una "copia" della rubrica telefonica che sta sul sito in C...
    per inserire dati da tastiera ho usato il classico scanf("...",...) ... solo che nel momento in cui premo invio al posto di apparire "inserisci numero telefonico" mi chiede ancora un stringa.... mi ricordo che avevo letto nel forum che bisognava fare un while prima dello scan... uno cosa del tipo

    codice:
    wihle(!getchar)
    scanf("....");
    per fare in modo che il programma capisse la fine dell input per passare alla prossima istruzione...
    qualcuno mi puo rinfrescare la memoria?
    grazie per la pazienza e scusate ancora

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Dopo la scanf

    while(getc(stdin)!='\n');
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Occhio però che in quella maniera se l'utente preme Ctrl-D o avviene un qualche errore di lettura finisci in un loop infinito...
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    152
    ora funziona ma si aspetta due stringhe sia per il nome che per il numero.... io invece vorrei che all "invio" funzionasse...

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    152
    come posso risolvere questa cosa? il while(getc(stdin)!='\n') non ha avuto il comportamento desiderato...

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non hai ancora mostrato il codice ... come risponderti?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    152
    codice:
    void AggiungiUtente(plist p){    
    contatto k;                                      //contatto da aggiungere
    printf("\n inserisci nome e cognome : ");      
    scanf("%s\n",&k.nome);              
    printf("\n%s\n",k.nome);                    //una piccola verifica per vedere il risultato
    printf("\ninserisci numero di telefono: ");      
    scanf("%d\n",&k.numero);            
    printf("\n%d\n",k.numero);      
    inserisciTesta(&p,k);      
    printf("\noperazione completata\n\n");      
    }
    inserisciTesta è stato testato e funziona correttamente quindi non ho voluto mettere la sua implementazione...
    plist è una lista con i campi info e next
    contatto è munito dei campi: nome, numero.

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Dalle scanf elimina tutti i \n
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    152
    hai ragione sono un vero idiota!

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    152
    ma perchè questo while deve andare dopo e non prima dello scanf?
    non dovrebbe essere
    "finchè non premi invio continua a leggere da tastiera?"

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.