본문 바로가기
c언어/내장함수

C 문자(열) 처리 라이브러리

by 감조자림 2023. 1. 10.

이 함수들은 <ctype.h>를 include 해야 한다.

  • isalpha(c) >> c가 알파벳인가?
  • isupper(c) >> c가 대문자인가?
  • islower(c) >> c가 소문자인가?
  • isdigit(c) >> c가 숫자인가?
  • isalnum(c) >> c가 숫자 또는 알파벳인가?
  • isxdigit(c) >> c가 16진수의 숫자인가? (0 ~ 9, A~F, a~ f)
  • isspace(c) >> c가 공백문자인가? (' ', '\n', '\t', '\v', '\r') 
  • ispunct(c) >> c가 구두점(마침표 또는 쉼표)인가?
  • isprint(c) >> c가 출력 가능한 문자인가?
  • iscntrl(c) >> c가 제어 문자인가?
  • isascii(c) >> c가 아스키 코드인가?

위 함수들은 참이면 0이 아닌 값을 반환하고 거짓이면 0을 반환한다.

또한 인수는 모두 int형을 받는다. 

 

  • toupper(c) >> c를 대문자로 바꾼다.
  • tolower(c) >> c를 소문자로 바꾼다.
  • toascii(c) >> c를 아스키 코드로 바꾼다.

 

# 문자열 처리

  • strcat(s1, s2) >> s2를 s1의 끝에 붙여넣는다.
  • strncat(s1, s2, n) >> s2를 n개 까지만 s1 뒤에 붙여넣는다.
  • strcpy(s1, s2) >> s2를 s1에 복사한다.(덮어씌운다)
  • strncpy(s1, s2, n) >> s2를 n개까지만 s1에 복사한다. (n이 s1의 길이보다 작으면 앞부분 n개만 s2의 문자열로 바뀌고 그 뒤는 s1이 가지고 있던 문자열 그대로)
  • strchr(s1, c) >> s1에서 문자 c를 찾는다. (s1에 문자 c가 있으면 그 위치의 주소를 반환한다. (여러개 있으면 제일 첫번째 것), 이를 응용해서 ( 해당 함수의 리턴 값- 배열의 첫 번째 주소) 을 하면 인덱스를 알 수 있다. 못 찾으면 NULL 을 반환)
  • strstr(s1, s2) >> s1에서 s2를 찾는다.
  • strtok(s, delimit) >> 문자열 s를 delimit(이하 분리자)을 기준으로 분리한다. 문자열을 계속해서 분리하고 싶으면 strtok(NULL, delimit); 이라고 하면 된다. 이렇게 하면 이전에 분리한 부분 이후부터 계속 분리를 실시한다. 처음에 strtok(s," "); 라고 하면 분리자에 무슨 문자를 넣든 문자열의 첫 번째 문자의 포인터(주소)를 반환하고 그 뒤에 NULL문자를 추가한다. 그 이후에 strtok(NULL, " "); 이라고 하면 문자열의 첫 번째 분리자에 해당하는 부분의 포인터를 반환한다 마찬가지로 한 칸 뒤에 NULL문자를 추가한다. 문제는 한 번에 여러 문자열에 대해서 strtok(NULL, delimit);을 실행시키면 의도치 않은 값들이 나온다. 분리자를 여러 개 지정하고 싶으면 strtok(s, ",\t\n");이런식으로 하면 된다. ',', '\t', '\n' 이 각각 모두 분리자로 지정되는 것이다. 

 

      

'c언어 > 내장함수' 카테고리의 다른 글

sscanf와 sprintf  (0) 2023.01.11
C 문자열 입출력 라이브러리  (0) 2023.01.09
strcmp와 strncmp  (0) 2022.12.29
랜덤값(난수)추출  (0) 2022.11.20
백준 11650 (qsort 활용)  (0) 2022.11.08

댓글