기본 콘텐츠로 건너뛰기

ctype.h

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;
}
  

댓글

이 블로그의 인기 게시물

연산자 우선 순위

() (괄호) [] (배열) -> (포인터멤버) . (구조체멤버) ! (부정) ~ (1의보수) ++ (증가) -- (감소) - (부호)  + (부호)  (자료형) (형변환)  * (포인터)  & (주소)  sizeof * (곱셈) / (나눗셈) % (나머지) + (덧셈) - (뺄셈) << >> (비트이동) < <= > >= (관계) == != (관계) & (비트논리곱) ^ (비트배타논리합) | ( 비트논리합 ) && (논리곱) || (논리합) ?: (조건) = (할당) += -= *= /= %= &= ^= |= <<= >>= (복합할당) , (쉼표)

주석문

주석(comment)은 프로그램의 기능이나 동작을 메모해두는 문장이다. 컴파일러는 주석의 내용을 무시한다. 여러 줄 주석 시작 기호(/*)와 끝 기호(*/)는 반드시 쌍으로 사용되어야하며, 중복해서 사용되어서는 안된다. 1 /* 2 주석 3 */ 한 줄 주석 원칙적으로, 한 줄 주석문은 C++언어에서 지원되는 형식이다. 1 // 주석

포인터

포인터는 다른 변수의 주소값을 가지는 특별한 변수이다. *는 포인터의 내용 연산자이다. &는 포인터의 주소 연산자이다.  일반 변수 포인터 변수   선언  int a; // 정수형 변수 a  int *a; // 포인터 변수 a를 종수형으로 선언  값 할당  int a = 100; // 변수 a에 100할당  *a = 100; // a 주소에 100 할당  주소 참조  &a; // 변수 a의 주소  a; // 주소  주소 연산  할 수 없음  a--; // 포인터를 1 감소 선언 1 자료형 * 포인터변수명 ; 1 int * p ; 변수 p는 포인터 변수이며, 정수형의 값을 가지는 변수에 대한 주소를 가진다. 선언시에 사용되는 *는 내용 연산자가 아니다. 초기화 포인터 변수는 반드시 초기화 후에 사용해야 한다. 1 int * p ; 2 int i ; 3 p = & i ; 포인터 변수의 크기 포인터 변수의 자료형은 포인터가 가르키는 변수의 자료형이다. 포인터 변수의 크기는 포인터가 가르키는 자료형의 크기와 무관하다. 1 #include <stdio.h> 2 3 /* 4 포인터의 크기 5 */ 6 7 int main () 8 { 9 int i = 4 ; 10 int * p_i = & i ; 11 char ch = 'a' ; 12 char * p_ch = & ch ; 13 double dbl = 1.0 ; 14 double * p_dbl = & dbl ; 15 16 printf ( "%d \n " , sizeof ( p_i )); 17 printf ( "%d \n " , size...