none
문자 판별 프로그램 RRS feed

  • 질문

  • 문자 판별 프로그램을 만들려고 하는데 도저히 감을 못찾겠네요..

    아스키 코드를 이용해서 영어 인지 또는 대문자 소문자 인지 숫자인지 판별하려는 프로그램을 할려고

    하는데 어떻게 하면 되죠?

    2010년 4월 17일 토요일 오전 5:48

모든 응답

  • 아스키 코드 테이블을 보면 범위가 있습니다.

    대문자가 분포하는 범위가 있고, 소문자가 분포하는 범위가 있고, 알파벳이 있는 범위가 있죠. 입력 받은 글자가 해당 범위에 속하는지를 두고 판단하시면 됩니다.

    2010년 4월 28일 수요일 오전 8:55
  • 아스키 코드 테이블을 보면 범위가 있습니다.

    대문자가 분포하는 범위가 있고, 소문자가 분포하는 범위가 있고, 알파벳이 있는 범위가 있죠. 입력 받은 글자가 해당 범위에 속하는지를 두고 판단하시면 됩니다.


    더 구체적으로 말씀드리면, 아스키 코드 테이블을 보시면 아시겠지만, '0'부터 '9'까지와 'A'부터 'z'까지 각각 고유의 수치가 있습니다. 이를 활용하면 됩니다. 가령, 문자를 하나 저장하는 변수 c에 대하여, 숫자인지 확인하여 숫자인지 아닌지 출력하기 위해서는

    if(c>='0' && c<='9') printf("Number.");

    else printf("Not number.");

     와 같이 하시면 되겠습니다. 아스키 코드에서 0부터 9까지 숫자가 증가함에 따라 이에 대응하는 수치도 증가하고, '0'과 '9' 사이는 모두 숫자밖에 없으므로 변수 c가 '0'부터 '9' 사이의 값이면 숫자가 되는것이죠. 영문자도 마찬가지입니다. 영문자를 확인하려면 'A'부터 'z'까지 조사하시면 되고, 영문자 중에서도 대문자는 'A'부터 'Z'까지, 소문자는 'a'부터 'z'까지의 사잇값인지 조사하시면 됩니다. 영문자 역시 'A'부터 'z'사이에 다른 문자는 없습니다.

    한편, WindowsXP를 기준으로, '0'에 대응하는 아스키 코드값은 48입니다. 그래서 위의 c>='0'은 WindowsXP 시스템에서는 c>=48과 동일한 기능을 합니다. 하지만, 다른 시스템에서는 '0'이 48이 아닐 수 있으니 48과 같은 구체적인 수치보다는, '0'과 같이 문자로 나타내는 것이 상대적으로 시스템에 종속적이지 않을 수 있습니다. 다른 문자에 대해서도 같습니다.

    2010년 5월 2일 일요일 오전 11:24