본문 바로가기
프로그래밍/C & C++

[C] 문자 처리 함수

by 불타는홍당무 2016. 7. 6.

출처: http://forum.falinux.com/


<ctype.h> 헤어 필요 (#include <type.h>)



1. 소문자인지 판별하기


형태  int islower(int c)

인수  c 판별할 문자 

반환  소문자이면 0 이외의 정수, 소문자가 아니면 0

#include <stdio.h>

#include <ctype.h> #include <string.h> int main() {

    int ch1 = 'a';

    int ch2 = 'A';

    int ch3 = '1';

    

    if (islower(ch1))

        printf("%c는 소문자입니다.\n", ch1);

    else

        printf("%c는 소문자가 아닙니다.\n", ch1);

    

    if (islower(ch2))

        printf("%c는 소문자입니다.\n", ch2);

    else

        printf("%c는 소문자가 아닙니다.\n", ch2);

        

    if (islower(ch3))

        printf("%c는 소문자입니다.\n", ch3);

    else

        printf("%c는 소문자가 아닙니다.\n", ch3);

  

    return 0;

}



2. 대문자인지 판별하기 


형태  int isupper(int c)

인수  c 판별할 문자

반환  대문자이면 0 이외의 정수, 대문자가 아니면 0

#include <stdio.h>

#include <ctype.h> #include <string.h> int main() { char *str = "1Ab\n@"; int ch; int idx; for (idx = 0; idx < strlen(str); idx++) { ch = str[idx]; if (isupper(ch)) printf("%c는 대문자입니다.\n", ch); else printf("%c는 대문자가 아닙니다.\n", ch); }


return 0; }



3. 구획문자인지 판별하기 


형태  int ispunct(int c)

인수  c 판별할 문자

반환  구획문자이면 0 이외의 정수, 구획문자가 아니면 0

#include <stdio.h> #include <ctype.h>

#include <string.h>

int main() { char *str = "1 A!@#"; int ch; int idx; for ( idx= 0; idx < strlen(str); idx++) { ch = str[idx]; if ( ispunct( ch)) printf( "%c는 구획 문자입니다.\n", ch); else printf( "%c는 구획 문자가 아닙니다.\n", ch); }

return 0; }



4. 공백문자인지 판별하기


형태  int isspace(int c)

인수  c 판별할 문자

반환  공백문자이면 0 이외의 정수, 구획문자가 아니면 0

#include <stdio.h> #include <ctype.h>

#include <string.h> int main() { char *str = "1 A\n\f\t\v\r!@#"; int ch; int idx; for ( idx= 0; idx < strlen( str); idx++) { ch = str[idx];

if (isspace( ch)) printf("%c는 공백문자입니다.\n", ch); else printf("%c는 공백문자가 아닙니다.\n", ch); }

return 0; }



5. 소문자를 대문자로 변환하기 


형태  int toupper(int ch)

#include <stdio.h>

#include <ctype.h>

#include <string.h>


int main( void) { char str[] = "0xaf1Agh!@#"; int idx; for ( idx= 0; idx < strlen( str); idx++) { str[idx] = (char)toupper(str[idx]); }

printf( "%s\n", str);

return 0; }



6. 대문자를 소문자로 변환하기 


형태  int tolower(int ch)

#include <stdio.h>

#include <ctype.h>

#include <string.h>


int main

{ char str[] = "0xAF1Agh!@#"; int idx; for ( idx= 0; idx < strlen( str); idx++) { str[idx] = (char)tolower( str[idx]); } printf( "%s\n", str);

return 0; }



7. 대소문자 무시하고 문자열 비교하기 


형태  char * strcasecmp(const char *str1, const char *str2  )

인수  비교할 대상 문자열, 비교할 문자열

반환  0 = 결과 값이면 s1 = s2, 0 < 결과 값이면 s1 > s2, 0 > 결과 값이면 s1 < s2

#include <stdio.h> #include <string.h> int main() { char str_apple[] = "apple"; char str_apple2[] = "Apple"; char str_apple3[] = " Apple"; char str_appleII[]= "AppleII"; printf( "%s with %s = %d\n", str_apple, str_apple , strcasecmp(str_apple, str_apple ) ); printf( "%s with %s = %d\n", str_apple, str_apple2 , strcasecmp(str_apple, str_apple2 ) ); printf( "%s with %s = %d\n", str_apple, str_apple3 , strcasecmp(str_apple, str_apple3 ) ); printf( "%s with %s = %d\n", str_apple, str_appleII, strcasecmp(str_apple, str_appleII) ); return 0; }



8. 대소문자 무시하고 문자열 비교하기 


형태  char * strncasecmp(const char *str1, const char *str2, size_t n )

인수  비교할 대상 문자열, 비교할 문자열

반환  0 = 결과 값이면 s1 = s2, 0 < 결과 값이면 s1 > s2, 0 > 결과 값이면 s1 < s2 

#include <stdio.h>

#include <string.h> int main() { char str_apple[] = "apple"; char str_apple2[] = "Apple"; char str_apple3[] = " Apple"; char str_appleII[]= "AppleII"; printf( "%s with %s = %d\n", str_apple, str_apple , strncasecmp( str_apple, str_apple , 3) ); printf( "%s with %s = %d\n", str_apple, str_apple2 , strncasecmp( str_apple, str_apple2 , 3) ); printf( "%s with %s = %d\n", str_apple, str_apple3 , strncasecmp( str_apple, str_apple3 , 3) ); printf( "%s with %s = %d\n", str_apple, str_appleII, strncasecmp( str_apple, str_appleII, 3) ); return 0; }



9. 영문자인지 또는 숫자인지 판별하기


형태  int isalnum(int c)

인수  c 판별할 문자

반환  영문자 또는 숫자이면 0 이외의 정수, 영문자 또는 숫자가 아니면 0

#include <stdio.h> #include <ctype.h> int main() { int ch1 = '#'; int ch2 = 'a'; int ch3 = '1'; if ( isalnum( ch1)) printf( "%c는 영문이나 숫자입니다.\n", ch1); else printf( "%c는 영문이나 숫자가 아닙니다.\n", ch1); if ( isalnum( ch2)) printf( "%c는 영문이나 숫자입니다.\n", ch2); else printf( "%c는 영문이나 숫자가 아닙니다.\n", ch2); if ( isalnum( ch3)) printf( "%c는 영문이나 숫자입니다.\n", ch3); else printf( "%c는 영문이나 숫자가 아닙니다.\n", ch3); return 0; }



10. 영문자인지 판별하기 


형태  int isalpha(int c)

인수  c 판별할 문자

반환  영문자면 0 이외의 정수, 영문자 또는 숫자가 아니면 0

#include <stdio.h> #include <ctype.h> int main() { int ch1 = '#'; int ch2 = 'a'; int ch3 = '1'; if ( isalpha( ch1)) printf( "%c는 영문자입니다.\n", ch1); else printf( "%c는 영문자가 아닙니다.\n", ch1); if ( isalpha( ch2)) printf( "%c는 영문자입니다.\n", ch2); else printf( "%c는 영문자가 아닙니다.\n", ch2); if ( isalpha( ch3)) printf( "%c는 영문자입니다.\n", ch3); else printf( "%c는 영문자가 아닙니다.\n", ch3); return 0; }



11. 숫자문자('0'~'9')인지 판별하기 


형태  int isdigit(int c)

인수  c 판별할 문자

반환  숫자문자('0'~'9')이면 0 이외의 정수, 숫자문자('0'~'9')가 아니면 0

#include <stdio.h> #include <ctype.h> int main() { int ch1 = '1'; int ch2 = 'a'; int ch3 = 256; // 아스키값 이상 if ( isdigit( ch1)) printf( "%c(x%03x)는 숫자 문자입니다.\n", ch1, ch1); else printf( "%c(x%03x)는 숫자 문자가 아닙니다.\n", ch1, ch1); if ( isdigit( ch2)) printf( "%c(x%03x)는 숫자 문자입니다.\n", ch2, ch2); else printf( "%c(x%03x)는 숫자 문자가 아닙니다.\n", ch2, ch2); if ( isdigit( ch3)) printf( "%c(x%03x)는 숫자 문자입니다.\n", ch3, ch3); else printf( "%c(x%03x)는 숫자 문자가 아닙니다.\n", ch3, ch3); return 0; }



12. 제어문자인지 판별하기 


형태  int iscntrl(int c)

인수  c 판별할 문자

반환  제어문자이면 0 이외의 정수, 제어문자가 아니면 0

#include <stdio.h> #include <ctype.h> int main() { int ch1 = '\t'; // 탭 문자 int ch2 = '\n'; // 엔터 문자 int ch3 = 'a'; if ( iscntrl( ch1)) printf( "%c는 제어 문자입니다.\n", ch1); else printf( "%c는 제어 문자가 아닙니다.\n", ch1); if ( iscntrl( ch2)) printf( "%c는 제어 문자입니다.\n", ch2); else printf( "%c는 제어 문자가 아닙니다.\n", ch2); if ( iscntrl( ch3)) printf( "%c는 제어 문자입니다.\n", ch3); else printf( "%c는 제어 문자가 아닙니다.\n", ch3); return 0; }



13. 공백문자 또는 탭문자인지 판별하기


형태  int isblank(int c)

인수  c 판별할 문자 

반환  공백문자 또는 탭문자이면 0 이외의 정수, 공백문자 또는 탭문자가 아니면 0

#include <stdio.h> #include <ctype.h> int main() { int ch1 = '\t'; // 탭 문자 int ch2 = ' '; // 공백 문자 int ch3 = '\n'; // 엔터 문자 int ch4 = 'a'; if ( isblank( ch1)) printf( "%c(x%02x)는 탭 또는 공백문자입니다.\n", ch1, ch1); else printf( "%c(x%02x)는 탭 또는 공백문자가 아닙니다.\n", ch1, ch1); if ( isblank( ch2)) printf( "%c(x%02x)는 탭 또는 공백문자입니다.\n", ch2, ch2); else printf( "%c(x%02x)는 탭 또는 공백문자가 아닙니다.\n", ch2, ch2); if ( isblank( ch3)) printf( "%c(x%02x)는 탭 또는 공백문자입니다.\n", ch3, ch3); else printf( "%c(x%02x)는 탭 또는 공백문자가 아닙니다.\n", ch3, ch3); if ( isblank( ch4)) printf( "%c(x%02x)는 탭 또는 공백문자입니다.\n", ch4, ch4); else printf( "%c(x%02x)는 탭 또는 공백문자가 아닙니다.\n", ch4, ch4); return 0; }


'프로그래밍 > C & C++' 카테고리의 다른 글

[C] 메모리 관리 함수  (0) 2016.07.08
[C] 날짜/시간 처리 함수  (0) 2016.07.07
[C] 포인터  (0) 2016.03.31
[C] 구조체  (0) 2016.03.27
[C] 문자열 처리함수  (0) 2016.03.22