Come determinare se un char
in C come a
o 9
è un numero o una lettera?Determinare se char è un numero o una lettera
E 'meglio usare:
int a = Asc(theChar);
o del presente?
int a = (int)theChar
Come determinare se un char
in C come a
o 9
è un numero o una lettera?Determinare se char è un numero o una lettera
E 'meglio usare:
int a = Asc(theChar);
o del presente?
int a = (int)theChar
Ti consigliamo di utilizzare le funzioni standard isalpha()
e isdigit()
in <ctype.h>
.
char c = 'a'; // or whatever
if (isalpha(c)) {
puts("it's a letter");
} else if (isdigit(c)) {
puts("it's a digit");
} else {
puts("something else?");
}
Nessuno di questi è utile. Utilizzare isalpha()
o isdigit()
dalla libreria standard. Sono nello <ctype.h>
.
Se (theChar >= '0' && theChar <='9')
è una cifra. Hai un'idea.
<ctype.h>
comprende una serie di funzioni per determinare se un char
rappresenta una lettera o un numero, come isalpha
, isdigit
e isalnum
.
Il motivo per cui int a = (int)theChar
non farà ciò che si desidera è perché a
manterrà semplicemente il valore intero che rappresenta un carattere specifico. Ad esempio, il numero di ASCII per '9'
è 57, e per 'a'
è 97.
anche per ASCII:
if (theChar >= '0' && theChar <= '9')
if (theChar >= 'A' && theChar <= 'Z' || theChar >= 'a' && theChar <= 'z')
Date un'occhiata a un ASCII table da vedere per te.
caratteri sono solo numeri interi, in modo da poter effettivamente fare un confronto diretto del tuo personaggio contro letterali:
if(c >= '0' && c <= '9'){
Questo vale per tutti i caratteri. See your ascii table.
ctype.h fornisce anche funzioni per fare questo per voi.
Questo è corretto, ma non perché ASCII sia garantito, ma a causa della contiguità delle cifre: http://stackoverflow.com/a/35936519/ 895.245 –
Normalmente è possibile verificare la presenza di lettere o numeri utilizzando semplici condizioni
if((ch>='a' && ch<='z') || (ch>='A' && ch<='Z))
{
/*This is an alphabet*/
}
Per cifre è possibile utilizzare
if(ch>='0' && ch<='9')
{
/*It is a digit*/
}
Ma dal momento che i personaggi in C sono trattate internamente come ASCII values è anche possibile utilizzare valori ASCII per controllare lo stesso.
standard di C99 sul c >= '0' && c <= '9'
c >= '0' && c <= '9'
(citato in another answer) funziona perché C99 N1256 standard draft 5.2.1 "Insiemi di caratteri" dice:
Sia la fonte e l'esecuzione carattere di base set, il valore di ciascun carattere dopo 0 nell'elenco precedente di cifre decimali deve essere maggiore di il valore del precedente.
ASCII tuttavia non è garantito.
Il controllo per '0' <= x <= '9' è corretto per tutte le implementazioni conformi allo standard (ASCII o non è irriverente). C richiede che le cifre decimali abbiano una rappresentazione contigua. Per quanto riguarda le lettere, tutte le scommesse sono disattivate. – Wiz
@ Wiz bello! C99 5.2.1: http://stackoverflow.com/a/35936519/895245 –