c user input int char[RISOLTO]

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Scrivi risposta
shivi_ubuntu
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 695
Iscrizione: venerdì 2 settembre 2011, 22:31

c user input int char[RISOLTO]

Messaggio da shivi_ubuntu »

Con il ciclo while controllo se number è minore di uno o grande di due allora continuo chiedere di inserire il numero tra 1 e 2 però il problema se io inserisco un carattere il mio programma parte all'infinito come posso controllare numero e int ma non un carattere se input riceve un carattere da il messaggio che riceve solo numeri grazie mille
Ultima modifica di shivi_ubuntu il lunedì 30 giugno 2014, 13:45, modificato 1 volta in totale.
Avatar utente
ilovelinux
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1590
Iscrizione: lunedì 22 luglio 2013, 8:49
Desktop: Awesome
Distribuzione: Archlinux x86_64
Sesso: Maschile
Località: Sicilia, Italia

Re: c user input int char

Messaggio da ilovelinux »

Posta tutto il codice, così posso capire meglio i tuoi eventuali errori ;)
shivi_ubuntu
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 695
Iscrizione: venerdì 2 settembre 2011, 22:31

Re: c user input int char

Messaggio da shivi_ubuntu »

non riesco gestire il problema del input finche uso numeri interi va benissimo però se inserisco un carattere il ciclo while va all'infinito . ho provato con if se userinput non è un numero allora visualizzo messaggio di errore però con il carattere non ha nessun effetto sul controllo

Codice: Seleziona tutto

int main(void)
{
    printf("\t\tC programming struct\n");

    carPoint *cPoint;
    carPoint cRef;
    cPoint = &cRef;

    int langOption = 0;

    while(langOption < 1 || langOption > 2){
        printf("\t\tSelect language - Seleziona lingua ( 1 english -  2  italiano ) --> ");
        scanf("%d",&langOption);

       if(!isdigit(langOption)){
          printf("\t\tuse only numbers - solo numeri");
       }
   
    }

    makeChoiceOnUserDecision(&langOption,cPoint);

    printf("\n");

    return 0;
}

Codice: Seleziona tutto

void makeChoiceOnUserDecision(int *userChioce, struct carInfo *cPoint){
    switch (*userChioce) {
    case 1:
        setCarInformationEnVersion(cPoint);
        getCarInfromationEnVersion(cPoint);
        break;
    case 2:
        setCarInformationItVersion(cPoint);
        getCarInfromationItVersion(cPoint);
        break;
    default:
        printf("\t\tno choice - nessuna scelta\n");
        break;
    }
}
Avatar utente
ilovelinux
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1590
Iscrizione: lunedì 22 luglio 2013, 8:49
Desktop: Awesome
Distribuzione: Archlinux x86_64
Sesso: Maschile
Località: Sicilia, Italia

Re: c user input int char

Messaggio da ilovelinux »

mi posti l'ouput
Grazie
shivi_ubuntu
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 695
Iscrizione: venerdì 2 settembre 2011, 22:31

Re: c user input int char

Messaggio da shivi_ubuntu »

Output con il carattere nel terminale mi chiede di inserire la scelta all'infinito che poi non riesco inserire devo fermare il programma chiudendo terminale
shivi_ubuntu
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 695
Iscrizione: venerdì 2 settembre 2011, 22:31

Re: c user input int char

Messaggio da shivi_ubuntu »

Invece con la scelta tra 1 e 2 il mio programma va benissimo io vorrei solo evitare l'inserimento dei caratteri all'inizio del programma nella scelta
Avatar utente
ilovelinux
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1590
Iscrizione: lunedì 22 luglio 2013, 8:49
Desktop: Awesome
Distribuzione: Archlinux x86_64
Sesso: Maschile
Località: Sicilia, Italia

Re: c user input int char

Messaggio da ilovelinux »

@shivi_ubuntu il forum non è una chat, se devi aggiungere qualcosa, edita il messaggio precedente
P.S. Mi sto allenano per diventare moderatore :D
Immagino che se inserisci un altro numero oltre 1 e 2 ti da lo stesso errore, giusto?
Avatar utente
SuperStep
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2037
Iscrizione: lunedì 19 dicembre 2011, 16:26
Desktop: Unity
Distribuzione: Ubuntu 16.04 LTS x86_64
Sesso: Maschile
Località: Somma Vesuviana (NA)

Re: c user input int char

Messaggio da SuperStep »

la cosa migliore sarebbe quella di leggere sempre un carattere, e poi trasformarlo in un intero (atoi).
ubuntu 16.04 LTS 64-bit - Memoria: 31,3 Gib - Processore: Intel Core i7-5960X CPU @ 3.00 GHz × 16 - Grafica: AMD Radeon HD 7800 Series - Disco: SSD 256 GB x 4 (RAID 01)
Avatar utente
vbextreme
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1214
Iscrizione: domenica 12 gennaio 2014, 14:06
Desktop: lxde
Distribuzione: xubuntu 14.10

Re: c user input int char

Messaggio da vbextreme »

Codice: Seleziona tutto

int main(void)
{
    printf("\t\tC programming struct\n");

    int langOption = 0;

    while(langOption < 1 || langOption > 2)
    {
        printf("\t\tSelect language - Seleziona lingua ( 1 english -  2  italiano ) --> ");
        scanf("%d",&langOption);
        while ( getchar() != '\n');//scanf necessina di una pulizia!
    }

    printf("lang:=%d\n",langOption);

    return 0;
}
Easy framework per il linguaggio C.
vbextreme hack your life
shivi_ubuntu
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 695
Iscrizione: venerdì 2 settembre 2011, 22:31

Re: c user input int char

Messaggio da shivi_ubuntu »

ok grazie mille risolto
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti