이 함수들은 <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 |
댓글