마음만은 새내기

항상 초심을 잃지 않고 생활하겠습니다~!

프로그래밍/C언어와 친구들

C언어 문자 검사 함수 반환 값 분석 (ASCII 코드 표 포함)

동동매니저 2018. 11. 5. 18:30

제가 지난 C언어 수업 시간에, 교수님께서 궁금증이 생기셨던 것 같았어요......

'C에서 제공되는 문자 검사 함수는 조건이 맞으면 0이 아닌 값을 반환한다'

여기에서 왜 16이 나왔을까? 라는 의문을 가지셨죠...... (그 이유를 잠시 후에 알려드릴게요~!)

그래서!! 제가 교수님의 궁금증을 해소해 드리고자 분석을 해 보았어요 ^^


저는, C언어로 ASCII 코드 값(0~127)을 모든 문자 검사 함수에 반복문으로 대입을 하였고,

그 결과를 보고서 형식으로 만들어서 교수님께 메일을 보내드렸죠......

교수님께서 수고 많이 하셨다고 하시면서, 자기 주도적 학습 태도를 유지하라고도 부탁 하셨어요 ^^

그리고 중간고사 시험 당일, 교수님께서 이에 대한 발표 자료를 만들 수 있는지를 여쭤보셨어요......

그래서!! 저는 제안(?)을 수락했고, 발표 자료를 만들어서 다음 수업 시간에 발표를 하게 되었죠 ^^


그 결과를 지금!! 알려드릴게요~!

테스트 환경은 Visual Studio 2010 기준이고, 빈 칸은 0으로 생각하시면 돼요~!

기본적으로 반환되는 대응 값은,

대문자 : 1

소문자 : 2

숫자 : 4

공백 문자 : 8

특수 문자 : 16

제어 문자 : 32

이렇게 반환하고, 예외적으로

isprint(' ') : 64(스페이스만!!)

isxdigit() : 조건에 맞으면 128이 반환됩니다.

또한, isascii()는, 모든 ASCII 문자에 대해서 1을 반환합니다.


같은 검사 함수일지라도, 문자의 분류가 다를 수 있기에, 이에 따라 서로 다른 값을 반환하는 것 같네요 ㅎㅎ

항상 같은 값만 반환하는 줄 알았는데, '0이 아닌 값'의 함정에 빠질 뻔했던 이번 과제였네요 ㅎㅎ

그럼 20000~!


[참고 자료] ASCII 코드 표