Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di kk.87
    Registrato dal
    May 2008
    Messaggi
    45

    [C] Inserimento caratteri

    Salve a tutti, non riesco a capire una stranezza e spero che qualcuno riesca a farmi capire. Perchè se scrivo il codice in questa maniera mi fa inserire da tastiera solo il valore di "lettera" e per il resto il programma termina correttamente ma senza farmi inserire il valore a "lettera2"?


    int main (){
    char lettera,lettera2;
    printf("aggiungi lettera:");
    scanf("%c", &lettera);
    printf("aggiungi lettera2:");
    scanf("%c", &lettera2);
    printf("lettera: %c\n lettera2: %c\n", lettera,lettera2);
    system("pause");
    }


    MENTRE se apporto una piccola modifica al codice, elminando il printf tra i due scanf, il programma gira perfettamente.


    int main (){
    char lettera,lettera2;

    printf("aggiungi lettera e lettera2:");
    scanf("%c", &lettera);
    scanf("%c", &lettera2);
    printf("lettera: %c\n lettera2: %c\n", lettera,lettera2);
    system("pause");
    }


    IO NON RIESCO A CAPIRE LA DIFFERENZA,POTETE AIUTARMI? GRAZIE

  2. #2
    Devi fare una fflush(stdin) dopo ogni scanf, oppure:
    codice:
    while(!getchar());
    P.S.: usa i tag CODE, indenta e metti il return 0.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Per risolvere il problema potresti anche aggiungere uno speciale carattere alla stringa di formato della scanf(), ossia "%*c".

    La forma generale nel tuo caso sarebbe:

    scanf("%c%*c", &nome_variabile);

    in sostanza %*c significa "leggi il carattere e scartalo", ovviamente in questo caso il carattere da scartare è quello di new-line che viene memorizzato nel buffer di input quando premi INVIO, dato che è quello che ti causa problemi.

    Potresti anche usare "%c\n", con cui se non ricordo male la scanf dovrebbe leggere fino al carattere di new-line e ignorarlo, in maniera tale da non compromettere il funzionamento delle scanf() successive.

    Ehm...non so a voi ma a me system("PAUSE"); da fastidio allo sguardo :°D

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    9
    bho
    Se ti sballi stai dicendo NO

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da qotsa
    bho
    Questo tuo commento era essenziale per il thread ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Moderazione

    Originariamente inviato da qotsa
    bho
    Ci tengo a precisare che, quando si legge una discussione, NON è assolutamente necessario rispondere per forza, a maggior ragione se non si ha nulla da dire a riguardo.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7

    Re: Moderazione

    Originariamente inviato da alka
    Ci tengo a precisare che, quando si legge una discussione, NON è assolutamente necessario rispondere per forza, a maggior ragione se non si ha nulla da dire a riguardo.
    Magari voleva solo riceve gli aggiornamenti sul thread, nel qual caso esiste il link "Ricevi aggiornamenti sul thread" in basso.
    Nel caso fosse una risposta, beh potevi risparmiartela

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.