a
또는 9
과 같은 C의 char
이 숫자인지 문자인지 어떻게 알 수 있습니까?char가 숫자인지 문자인지 확인
int a = Asc(theChar);
나이 :
이 것을 사용하는 것이 더 좋은가요?
int a = (int)theChar
a
또는 9
과 같은 C의 char
이 숫자인지 문자인지 어떻게 알 수 있습니까?char가 숫자인지 문자인지 확인
int a = Asc(theChar);
나이 :
이 것을 사용하는 것이 더 좋은가요?
int a = (int)theChar
당신은 <ctype.h>
에 isalpha()
및 isdigit()
표준 기능을 사용할 수 있습니다.
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?");
}
이들 중 어느 것도 유용하지 않습니다. 표준 라이브러리의 isalpha()
또는 isdigit()
을 사용하십시오. 그들은 <ctype.h>
에 있습니다.
(theChar >= '0' && theChar <='9')
인 경우 숫자입니다. 당신은 아이디어를 얻습니다. char
는 문자 나 숫자와 같은 isalpha
, isdigit
및 isalnum
를 나타내는 경우
<ctype.h>
는 판정 기능의 범위를 포함한다.
int a = (int)theChar
이 원하는 것을 수행하지 않는 이유는 a
이 특정 문자를 나타내는 정수 값을 단순히 보유하기 때문입니다. 예를 들어 '9'
에 대한 ASCII 번호는 57이며, 'a'
것이 ASCII 위해 또한 97
있어 :
if (theChar >= '0' && theChar <= '9')
if (theChar >= 'A' && theChar <= 'Z' || theChar >= 'a' && theChar <= 'z')
가 한 번보세요 ASCII table을 직접 확인하십시오.
문자는 정수, 그래서 당신은 실제로 리터럴에 대한 캐릭터의 직선 비교를 수행 할 수 있습니다
if(c >= '0' && c <= '9'){
이 모든 문자에 적용됩니다. See your ascii table.
ctype.h 또한이 작업을 수행하는 기능을 제공합니다.
ASCII가 보장 되었기 때문에 숫자의 연속성 때문에 올바른 것은 아니지만 http://stackoverflow.com/a/35936519/ 895245 –
당신은 일반적으로 당신이
if(ch>='0' && ch<='9')
{
/*It is a digit*/
}
그러나 C의 문자 이후
내부적 ASCII values로 간주됩니다 사용할 수있는 간단한 조건 숫자를 들어if((ch>='a' && ch<='z') || (ch>='A' && ch<='Z))
{
/*This is an alphabet*/
}
를 사용하여 문자 또는 숫자를 확인할 수 있습니다 당신은 또한 ASCII 값을 사용할 수 있습니다 같은지 확인해 봐.
에 C99 표준 c >= '0' && c <= '9'
c >= '0' && c <= '9'
(in another answer 언급) C99 N1256 standard draft 5.2.1 "문자 세트"라는 작품 때문에 : 소스 및 실행 기본 문자 모두에서
위의 10 진수 목록에서 0 이후의 각 문자의 값은 이전 값
그러나 ASCII는 보장되지 않습니다.
'0'<= x <= '9'에 대한 검사는 모든 표준 호환 구현 (ASCII 또는 불일치하지 않음)에 대해 정확합니다. C는 10 진수가 연속적인 표현을 요구합니다. 편지에 관해서는, 모든 내기는 꺼져 있습니다. – Wiz
@Wiz nice! C99 5.2.1 : http://stackoverflow.com/a/35936519/895245 –