연재 완료/C Lang 이론

C언어 이론 11. 표준 라이브러리(정의~문자열 처리 함수)

라이피 (Lypi) 2018. 6. 6. 02:24
반응형

내용 출처 : YES C (정보공학연구소 /생능출판사)

               혼자 연구하는 C/C++ (SoEn.kr /와우북스)


Ⅰ. 표준 라이브러리 함수

   ① C언어 표준 규약에 의해서 모든 컴파일러가 기본적으로 제공하도록 약속되어 있는 함수들을 말한다.

   ② 표준 함수들의 선언은 표준 헤더파일에 있으므로 사용하기 위해서는 함수가 선언된 표준 헤더파일을 #include 해줘야한다.

   ③ 기본 함수의 정의는 라이브러리 파일에 있으며 링크 과정에서 연결된다.

   ④ 현재 가장 최신의 표준 규약은 C17이다. 

   ⑤ 이런 표준 함수를 모두 외우는건 비효율적이며, 어떻게 쓰이는지를 알아뒀다가 필요할때마다 레퍼런스를 참조하여 사용하면 된다.

   ⑥ 아래는 주요한 함수들과 이를 포함하는 헤더파일이다.

   ⑦ 하나의 함수가 여러개의 헤더파일에 저장되어 있는 경우도 많다.


헤더 파일

기능

관련 함수

 stdio.h

표준 입출력

printf(), scanf(), getchar(), fopen(), fseek(), ...

string.h

메모리와 문자열의 처리

strcat(), strcmp(), strcpy(), strlen(), ...

ctype.h

문자 검사 및 변환

isalnum(), isalpha(), isgraph(), tolower(), ...

math.h

삼각함수, 지수 절대값 함수 등 수학 함수

sin(), cos(), tan(), log(), exp(), fmod(), sqrt(), abs(), ...

stdlib.h

메모리 동적 할당, 가상 난수 발생, 문자열 변환

malloc(),free(), rand(), strtod(), atof(), ... 

malloc.h

메모리 할당에 관한 함수

calloc(), malloc(), free(), ...

time.h

날짜와 시간 그리고 내부 클락

clock(), ctime(), asctime(), ftime(), time(), getdata(), ...



Ⅱ. 문자 처리 함수 

   ① 문자 처리 함수는 하나의 문자를 변환 또는 검사하여, 그 결과를 반환한다. 

   ② 판별 함수의 경우에는 참이면 0이 아닌 숫자를 거짓이면 0을 반환한다.

   ③ 변환 함수의 경우에는 그 결과를 반환한다.

   ④ 아래의 함수들은 ctype.h에 선언되어 있다.


함수명

기능

반환값

 isalnum(int c)

문자 c가 영문자 또는 숫자인가를 판별

참이면 0 외의 정수. 아니면 0

isalpha(int c)

문자 c가 영문자인가를 판별

참이면 0 외의 정수. 아니면 0

isascii(int c)

문자 c가 아스키 문자인가를 판별

참이면 0 외의 정수. 아니면 0

iscntrl(int c)

문자 c가 제어문자인지를 판별

참이면 0 외의 정수. 아니면 0

isdigit(int c)

문자 c가 숫자인지를 판별

참이면 0 외의 정수. 아니면 0

islower(int c)

문자 c가 소문자인지를 판별

참이면 0 외의 정수. 아니면 0

isprint(int c)

문자 c가 공백 이외의 인쇄 가능 문자인지를 판별

참이면 0 외의 정수. 아니면 0

ispunct(int c)

문자 c가 구두점(. , " ...)인지를 판별

참이면 0 외의 정수. 아니면 0

isspace(int c)

문자 c가 공백문자(탭, 공백)인지를 판별

참이면 0 외의 정수. 아니면 0

isupper(int c)

문자 c가 대문자인지를 판별

참이면 0 외의 정수. 아니면 0

 tolower(int c)

문자 c를 소문자로 변환

문자 c의 소문자

toupper(int c)

문자 c를 대문자로 변환

문자 c의 대문자



Ⅲ. 문자열 처리 함수

   ① 문자열을 조작하거나 복사, 연결, 비교, 검출하는 기능을 제공하는 함수들. 

   ② 아래의 함수들은 string.h에 선언되어 있다.


함수명

형식

기능

strlen()

unsigned strlen(const char* str)

str의 길이를 반환

strcat_s()

errno_t strcat_s(char* str1, const char* str2)

str1에 str2를 연결하여 str1에 저장

strncat_s()

ernno_t strncat_s(char* *str1, rsize_t byte,

const char* str2, rsize_t max)

str1에 str2의 선두 max개의 문자를 연결

strcmp()

int strcmp(cahr* str1, const char* str2)

str1과 str2의 문자코드를 대소 비교

str1>str2이면 양수값 반환

str1<str2이면 음수값 반환

str1 = str2이면 0을 반환

strncmp()

int strncmp(char* str1, const char* str2, unsigned c)

두 문자열을 앞에서부터 c개 비교한다.

나머지는 strcmp()와 동일.

strcpy_s()

errno_t strcpy_s(char* str1, const char* str2)

str2를 str1으로 복사한다.

strncpy_s()

char* strncpy_s(char* str1,, const char* str2, size_t c)

앞에서부터 c개의 문자를 str2에서 str1으로 복사한다.

strstr()

char* strstr(const char* str1, const char* str2)

str1내에 str2가 포함되어 있다면 

str1에 있는 str2의 첫글자의 위치를 반환한다. 

 strerror()

char* strerror(int errnum)

오류번호가 errnum인 오류메시지를 반환한다.

strpbrk()

char* strpbrk(char* str1, const char* str2)

str1에 str2의 문자들 중 

가장 먼저 발견되는 문자의 위치를 반환한다.

strchr()

char* strrchr(const char* str, int c)

str 내에서 가장 앞에 있는 문자 c의 위치를 반환한다.

strcspn()

int strcspn(const char* str1, const char* str2)

str1내에서 str2에 있는 문자들이 가장 먼저 연속으로 

발견되는 길이를 리턴한다. 

str2의 문자들의 순서는 상관없다.

strtok_s()

char* strtok(char* str1, char* str2, char** context)

토큰(분리기호)로 쓸 문자열을 str2에 입력하면, 

str1의 문자열의 선두부터 str2가 처음 나올 때 까지의

문자열을 가리키는 포인터를 리턴한다.

context에는 분할된 문자열 중 뒷쪽 문자열이 저장된다.

strupr()

char* strupr(char* str)

str의 문자열 중 소문자를 대문자로 변환



반응형