2011-12-23 4 views
36

a 또는 9과 같은 C의 char이 숫자인지 문자인지 어떻게 알 수 있습니까?char가 숫자인지 문자인지 확인

int a = Asc(theChar); 

나이 :

이 것을 사용하는 것이 더 좋은가요?

int a = (int)theChar 

답변

71

당신은 <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?"); 
} 
10

이들 중 어느 것도 유용하지 않습니다. 표준 라이브러리의 isalpha() 또는 isdigit()을 사용하십시오. 그들은 <ctype.h>에 있습니다.

4

(theChar >= '0' && theChar <='9') 인 경우 숫자입니다. 당신은 아이디어를 얻습니다. char는 문자 나 숫자와 같은 isalpha, isdigitisalnum를 나타내는 경우

12

<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을 직접 확인하십시오.

+1

'0'<= x <= '9'에 대한 검사는 모든 표준 호환 구현 (ASCII 또는 불일치하지 않음)에 대해 정확합니다. C는 10 진수가 연속적인 표현을 요구합니다. 편지에 관해서는, 모든 내기는 꺼져 있습니다. – Wiz

+0

@Wiz nice! C99 5.2.1 : http://stackoverflow.com/a/35936519/895245 –

16

문자는 정수, 그래서 당신은 실제로 리터럴에 대한 캐릭터의 직선 비교를 수행 할 수 있습니다

if(c >= '0' && c <= '9'){ 

이 모든 문자에 적용됩니다. See your ascii table.

ctype.h 또한이 작업을 수행하는 기능을 제공합니다.

+0

ASCII가 보장 되었기 때문에 숫자의 연속성 때문에 올바른 것은 아니지만 http://stackoverflow.com/a/35936519/ 895245 –

1

당신은 일반적으로 당신이

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 값을 사용할 수 있습니다 같은지 확인해 봐.

How to check if a character is number or letter

1

C99 표준 c >= '0' && c <= '9'

c >= '0' && c <= '9' (in another answer 언급) C99 N1256 standard draft 5.2.1 "문자 세트"라는 작품 때문에 : 소스 및 실행 기본 문자 모두에서

위의 10 진수 목록에서 0 이후의 각 문자의 값은 이전 값

그러나 ASCII는 보장되지 않습니다.

관련 문제