Określ, czy znak jest liczbą czy literą
Jak określić, czy char
W C, np. a
lub 9
jest liczbą lub literą?
Czy lepiej użyć:
int a = Asc(theChar);
Albo to?
int a = (int)theChar
7 answers
Będziesz chciał używać standardowych funkcji isalpha()
i isdigit()
w <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?");
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-23 02:58:36
Znaki są tylko liczbami całkowitymi, więc możesz zrobić proste porównanie swojej postaci z literałami:
if( c >= '0' && c <= '9' ){
Dotyczy to wszystkich znaków. Zobacz tabelę ascii .
Ctype.h zapewnia również funkcje, które mogą to zrobić za Ciebie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-23 03:01:39
<ctype.h>
zawiera szereg funkcji do określania, czy char
reprezentuje literę lub liczbę, takich jak isalpha
, isdigit
i isalnum
.
Powodem, dla którego int a = (int)theChar
nie zrobi tego, co chcesz, jest to, że a
po prostu przechowuje wartość całkowitą, która reprezentuje określony znak. Na przykład liczba ASCII dla '9'
to 57, a dla 'a'
to 97.
Również dla ASCII:
- Numeryczne-
if (theChar >= '0' && theChar <= '9')
- alfabetyczny -
if (theChar >= 'A' && theChar <= 'Z' || theChar >= 'a' && theChar <= 'z')
Spójrz na tabela ASCII aby zobaczyć na własne oczy.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-23 03:00:08
Żadne z nich nie robi nic użytecznego. Użyj isalpha()
LUB isdigit()
z biblioteki standardowej. Są w <ctype.h>
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-23 02:58:58
Jeśli {[0] }to cyfra. Rozumiesz.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-23 02:59:39
C99 standard on c >= '0' && c <= '9'
c >= '0' && c <= '9'
(wspomniany w innej odpowiedzi ) działa ponieważ C99 n1256 standard draft 5.2.1 "zestawy znaków" mówi:
Zarówno w źródłowym, jak i wykonawczym podstawowym zestawie znaków, wartość każdego znaku po 0 w powyższej liście cyfr dziesiętnych jest o jeden większa od wartości poprzedniej.
ASCII nie jest jednak gwarantowane.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:26:27
Możesz normalnie sprawdzić litery lub cyfry za pomocą prostych warunków
if((ch>='a' && ch<='z') || (ch>='A' && ch<='Z))
{
/*This is an alphabet*/
}
Dla cyfr można użyć
if(ch>='0' && ch<='9')
{
/*It is a digit*/
}
Ale ponieważ znaki w C są wewnętrznie traktowane jako wartości ASCII, Możesz również użyć wartości ASCII, aby sprawdzić to samo.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-28 13:57:27