2010-05-11 4 views
2

두 명령 isdigit()isalpha()의 작동 방식에 대한 간략한 설명이 필요합니다. 물론, 나는 질문을하기 전에 온라인 자료를 읽었지 만, 시도해 보았고 일할 수 없었습니다. 그것들을 사용하는 가장 간단한 방법은 무엇입니까?isdigit() 및 isalpha() 명령을 사용하는 가장 간단한 방법은 무엇입니까?

가 나는 값을 돌려 준다 알고, 그래서 내가 같이 사용할 수 있으리라 믿고있어 :

if(isdigit(someinput)==1) 
return -1; 

올바른인가요? 어떤 유형의 캐릭터에도 이것을 사용할 수 있습니까? 그리고 그것을 float 숫자 또는 배열과 비교할 수 있습니까?

숫자와 문자가있는 텍스트 파일을 scanf로 검색하고 내가 스캔중인 것을 결정한다고 가정 해보십시오. 이러한 두 가지 명령을이 맥락에서 사용할 수 있습니까?

답변

1

"명령"이 아니며 기능입니다. 함수는 인수와 반환 값을 허용합니다.

#include <ctype.h> 
int isdigit(int ch); 

isdigit 함수의 서명이다 : 그것은 (A char처럼 int에 캐스트 할 수 있습니다 또는 무언가)를 int 값을 받아 들일 것, 그리고 int을 반환 할 것을 나타냅니다. 따라서 배열을 전달할 수는 없습니다 ( int[]의 모든 구성원에게 호출 할 수 있음).

isalpha의 서명은 동일합니다 (분명히 이름 제외).

문서를 말한다 다음

설명 : 함수 isalpha에() 인수는 알파벳의 편지 인 경우가 아닌 0을 반환 . 그렇지 않으면 이 반환됩니다.

이렇게하면 모든 구현에 대해 비교가 잘못 될 수 있습니다. 더 나은 할 일이 같은 : C에서

if (isdigit(someinput)) { 
return -1; 
} 

, 0 부울 식 false로 평가되며, '0'이 아닌 값은 true으로 평가한다. 따라서이 검사에서는 isdigit의 구현에 대해 -1, 5 등을 반환합니다.

텍스트 파일의 값에이 값을 적용하려면 텍스트를 한 번에 한 문자 씩 읽고받은 문자를 해당 메서드로 전달해야합니다.

+0

감사합니다. 그래서 나는 이것을 사용하여 단일 문자를 비교할 수 있습니까? – NLed

+0

이 함수를 한 번 호출하면 하나의 문자가 사용되지만 필요에 따라 반복 할 수 있습니다. – danben

+0

답장을 보내 주셔서 감사합니다. 하나의 마지막 중도적인 질문 ... 문자를 숫자로 변환하는 방법은 무엇입니까? – NLed

0

문자 유형으로 사용할 수 있습니다! (실제로는 int, 호환성 여부 등을 알 수 없지만 가장 일반적인 용도는 문자입니다)

'5'가 숫자인지 영숫자인지를 결정합니다. 알파벳).someInput는 "문자"

+0

답장을 보내 주셔서 감사합니다. – NLed

+0

안녕하세요, 문제 없습니다! 그게 내가 여기있는 이유야! – LukeN

+1

'isxxx()'함수는'int'를 취하는 것으로 정의되며'getchar()','getc()'및'fgetc()'에 의해 반환 된 모든 값을 전달할 수 있습니다. char'와 특별한 값인'EOF'를 더한 것입니다. – chqrlie

2

유형 인 경우 그리고 네, 당신의 사용은 정확 당신 하지 일반적으로, 반환 값을 비교 단지 부울로 처리 할 수행

if (isalpha(someinput)) 
    do_whatever(); 

당신이 주장하는 경우 비교를하기 위해서는 !=0 일 필요가 있지만 완전히 중복되고 무의미합니다.

입력에서 읽은 문자에 사용합니다. 그 시점에서 부동 소수점 또는 기타 문자 그룹이 아닙니다. float의 경우 숫자 중 일부는 숫자가되지만 대부분 숫자가 아닌 소수점 (e, + 또는 -도 포함)을 포함합니다.

함수 중 하나를 호출하기 전에 일반적으로 입력을 unsigned char으로 캐스팅해야합니다. 대부분의 문자 집합은 signed char으로 볼 때 일부 문자를 음수로 처리하며, 음수 값을 전달하면 정의되지 않은 동작이 발생합니다.

+0

스캔 된 입력이 나중에 계산에 사용될 숫자 일 경우 어떻게해야합니까? – NLed

+0

@ZaZu : 이미 숫자로 변환 한 경우 더 이상 isdigit 또는 isalpha에 대한 실제 사용이 없습니다. 숫자가 아니며 숫자 또는 알파벳 문자가 아닙니다. –

+0

어떻게 문자를 숫자로 변환합니까? – NLed