내용 출처 : 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의 문자열 중 소문자를 대문자로 변환 |