ctype.h 파일에는 문자의 종류를 판별( is...() )하거나 대소문자를 변경( to...() )하는 함수들이 정의되어 있다.
int isalnum(int ch);
문자 ch가 영문자 혹은 숫자인 경우에는 0이 아닌 값 (즉, true)를 반환하고, 그렇지 않은 때에는 0 (false)를 반환한다. 매개변수 ch는 int 형으로 형변환된다.
A ~ Z, a~ z, 0 ~ 9
int isalpha(int ch);
문자 ch가 영문자인 경우에는 0이 아닌 값 (즉, true)를 반환하고, 그렇지 않은 때에는 0 (false)를 반환한다. 매개변수 ch는 int 형으로 형변환된다.
A ~ Z, a ~ z
int iscntrl(int ch);
문자 ch가 제어문자인 경우에는 0이 아닌 값 (즉, true)를 반환하고, 그렇지 않은 때에는 0 (false)를 반환한다. 매개변수 ch는 int 형으로 형변환된다.
0x00 ~ 0x1f, 0x7f
int isdigit(int ch);
문자 ch가 10진수 숫자인 경우에는 0이 아닌 값 (즉, true)를 반환하고, 그렇지 않은 때에는 0 (false)를 반환한다. 매개변수 ch는 int 형으로 형변환된다.
0 ~ 9
int isgraph(int ch);
문자 ch가 표현 가능한 문자인 경우에는 0이 아닌 값 (즉, true)를 반환하고, 그렇지 않은 때에는 0 (false)를 반환한다. 매개변수 ch는 int 형으로 형변환된다.
출력 가능한 문자 집합에서 공백 문자가 제외된다. 0x21 ~ 0x7e
int islower(int ch);
문자 ch가 소문자인 경우에는 0이 아닌 값 (즉, true)를 반환하고, 그렇지 않은 때에는 0 (false)를 반환한다. 매개변수 ch는 int 형으로 형변환된다.
a ~ z
int isprint(int ch);
문자 ch가 영문자 혹은 숫자인 경우에는 0이 아닌 값 (즉, true)를 반환하고, 그렇지 않은 때에는 0 (false)를 반환한다. 매개변수 ch는 int 형으로 형변환된다.
0x20 ~ 0x7e
int ispunct(int ch);
문자 ch가 구둣점 문자인 경우에는 0이 아닌 값 (즉, true)를 반환하고, 그렇지 않은 때에는 0 (false)를 반환한다. 매개변수 ch는 int 형으로 형변환된다.
출력 가능한 문자 집합에서 공백문자와 영문자, 숫자를 제외된다.
int isspace(int ch);
문자 ch가 공백문자인 경우에는 0이 아닌 값 (즉, true)를 반환하고, 그렇지 않은 때에는 0 (false)를 반환한다. 매개변수 ch는 int 형으로 형변환된다.
스페이스, 탭, 캐리지 리턴, 뉴 라인, 수직 탭, 폼 피드
int isupper(int ch);
문자 ch가 대문자인 경우에는 0이 아닌 값 (즉, true)를 반환하고, 그렇지 않은 때에는 0 (false)를 반환한다. 매개변수 ch는 int 형으로 형변환된다.
A ~ Z
int isxdigit(int ch);
문자 ch가 16진 숫자인 경우에는 0이 아닌 값 (즉, true)를 반환하고, 그렇지 않은 때에는 0 (false)를 반환한다. 매개변수 ch는 int 형으로 형변환된다.
0 ~ 9, A ~ F, a ~ f
int tolower(int ch);
문자 ch가 대문자인 경우에 해당 문자의 소문자를 반환한다. 대문자가 아닌 때에는 전달받은 값을 그대로 반환한다. 매개변수 ch는 int 형으로 형변환되며, 반환값의 자료형인 int는 char로 형변환 될 수 있다.
int toupper(int ch);
문자 ch가 소문자인 경우에 해당 문자의 대문자를 반환한다. 소문자가 아닌 때에는 전달받은 값을 그대로 반환한다. 매개변수 ch는 int 형으로 형변환되며, 반환값의 자료형인 int는 char로 형변환 될 수 있다.
#include <stdio.h>
#include <ctype.h>
void checkCharacter( char* c) {
printf("is alphanumeric? %s\n" , isalnum(*c) ? "yes" : "no");
printf("is alphabetic? %s\n" , isalpha(*c) ? "yes" : "no");
printf("is control character? %s\n" , iscntrl(*c) ? "yes" : "no");
printf("is decimal digit? %s\n" , isdigit(*c) ? "yes" : "no");
printf("is graphical representation? %s\n" , isgraph(*c) ? "yes" : "no");
printf("is lower-case letter? %s\n" , islower(*c) ? "yes" : "no");
printf("is printable? %s\n" , isprint(*c) ? "yes" : "no");
printf("is punctuation character? %s\n" , ispunct(*c) ? "yes" : "no");
printf("is white-space? %s\n" , isspace(*c) ? "yes" : "no");
printf("is upper-case letter? %s\n" , isupper(*c) ? "yes" : "no");
printf("is hexademical digit? %s\n", isxdigit (*c) ? "yes" : "no" );
}
int convertCharacter( char c) {
int out;
if (isupper (c)) {
out = tolower(c);
} else {
out = toupper(c);
}
return out;
}
int main() {
char ch = 'c' ;
char str[] = "Test String!" ;
int i = 0;
/* is...() */
checkCharacter(&ch);
/* to...() */
while (str[i]) {
str[i] = convertCharacter(str[i]);
i++;
}
printf(str);
return 0;
}
댓글
댓글 쓰기