Uso isdigit

di il
7 risposte

Uso isdigit

Buona sera chi mi può spiegare cortesemente l'uso di is digit?

Sono riuscito a verificare se inserisco una cifra o lettera, ma non capisco perché l'argomento deve essere dichiarato char per funzionare ,e non int come da documentazione, se cosi fosse, devo eseguire una conversione con atoi se voglio sommare i numeri che inserisco?Grazie per la cortesia

#include <stdio.h>
# include <ctype.h>

int main()
{
    char Size;
   do{
     printf("Inserire la dimnensione della piramide");
     scanf( " %c", &Size);
     
      }    while((isdigit(Size)==0));//ripeto finchè inserisco una lettera
         printf("c", Size);
             


    return 0;
}

7 Risposte

  • Re: Uso isdigit

    Che intendi con sommare i numeri che inserisco?

    L'argomento è un int ma sempre riferito al codice ascii del carattere quindi un char va  bene

  • Re: Uso isdigit

    02/12/2023 - oregon ha scritto:


    Che intendi con sommare i numeri che inserisco?

    L'argomento è un int ma sempre riferito al codice ascii del carattere quindi un char va  bene

    Ciao Oregon grazie per la risposta ,il mio problema è il seguente; vorrei realizzare una calcolatrice , e verificare che il dato contenuto sia di tipo numerico, e che non vi siano caratteri indesiderati.

    Pensavo che is digit mi restitutiva tutto il numero, ma invece scansiona carattere per carattere e devo  ricomporre la stringa !giusto?

    Non ho ancora affrontato le stringhe, e forse devo rinunciare a questa decisione e limitarmi solo ad eseguire le operazioni ,grazie

  • Re: Uso isdigit

    Digit significa cifra ovvero un simbolo tra 0 e 9.

    Isdigit controlla solo che il codice ASCII passato sia quello di una cifra che va tra 0 e 9 (ovvero tra 48 e 57)  e basta

    Con quella scanf accetti un SOLO carattere numerico tra 0 ee 9. Se vuoi inserire un valore numerico devi usare la scanf con %d e una variabile int

    Controllerai con una if se tale variabile è compresa tra il minimo e il massimo che desideri.

    Se inserirai caratteri alfabetico avrai un errore ma per fare un controllo effettivo devi usare una stringa con la scanf con %s

    Dati i tuoi dubbi più che basilari sul linguaggio e sulle funzioni e variabili, ti consiglio di fare un passo indietro e aprire il libro del C all prima pagina. Devi avere delle certezze sugli strumenti di base del linguaggio se vuoi procedere 

  • Re: Uso isdigit

    03/12/2023 - oregon ha scritto:


    Digit significa cifra ovvero un simbolo tra 0 e 9.

    Isdigit controlla solo che il codice ASCII passato sia quello di una cifra che va tra 0 e 9 e basta

    Con quella scanf accetti un SOLO carattere numerico tra 0 ee 9. Se vuoi inserire un valore numerico devi usare la scanf con %d e una variabile int

    Controllerai con una if se tale variabile è compresa tra il minimo e il massimo che desideri.

    Se inserirai caratteri alfabetico avrai un errore ma per fare un controllo effettivo devi usare una stringa con la scanf con %s

    Dati i tuoi dubbi più che basilari sul linguaggio e sulle funzioni e variabili, ti consiglio di fare un passo indietro e aprire il libro del C all prima pagina. Devi avere delle certezze sugli strumenti di base del linguaggio se vuoi procedere 

    03/12/2023 - oregon ha scritto:


    Digit significa cifra ovvero un simbolo tra 0 e 9.

    Isdigit controlla solo che il codice ASCII passato sia quello di una cifra che va tra 0 e 9 e basta

    Con quella scanf accetti un SOLO carattere numerico tra 0 ee 9. Se vuoi inserire un valore numerico devi usare la scanf con %d e una variabile int

    Controllerai con una if se tale variabile è compresa tra il minimo e il massimo che desideri.

    Se inserirai caratteri alfabetico avrai un errore ma per fare un controllo effettivo devi usare una stringa con la scanf con %s

    Dati i tuoi dubbi più che basilari sul linguaggio e sulle funzioni e variabili, ti consiglio di fare un passo indietro e aprire il libro del C all prima pagina. Devi avere delle certezze sugli strumenti di base del linguaggio se vuoi procedere 

    hai ragione ,ma non trovo una valido libro me ne consigli uno che abbia esempi,grazie

  • Re: Uso isdigit

    Non quotare tutta la risposta addirittura due volte…

    Libri ce ne sono tanti, pensavo ne seguissi già uno …

    il Deitel & Deitel dovrebbe essere didatticamente valido

  • Re: Uso isdigit

    03/12/2023 - oregon ha scritto:


    Non quotare tutta la risposta addirittura due volte…

    Libri ce ne sono tanti, pensavo ne seguissi già uno …

    il Deitel & Deitel dovrebbe essere didatticamente valido

    Si Lo uso, ma non trovo tanti esempi,comunque grazie 

  • Re: Uso isdigit

    Devi leggerlo il libro e studiare la teoria. Se non hai chiaro un determinato argomento inutile fare prove di scrittura codice.

    Ti sei perso sulla isdigit perché non hai chiaro che si sta parlando di singoli caratteri ASCII numerici, che sono dati di tipi differente da un intero binario.

Devi accedere o registrarti per scrivere nel forum
7 risposte