라이브러리는 프로그램 개발 시 반복적으로 사용되는 코드를 미리 만들어 놓은 모듈로, 필요할 때 불러 쓴다. 라이브러리는 크게 표준 라이브러리와 외부 라이브러리로 나뉜다. 표준 라이브러리는 언어를 설치하면 자동으로 제공되는 기본 기능이고, 외부 라이브러리는 개발자가 별도로 다운로드하고 설치해야 하는 추가 기능이다.
C언어의 stdlib.h는 standard library라는 이름 그대로 범용 함수를 모아 둔 표준 라이브러리다. 문자열과 숫자 사이의 변환 함수들과 동적 메모리를 할당·해제하는 malloc, free 함수가 여기에 속한다. 문자열 처리 함수는 string.h, 입출력 함수는 stdio.h, 수학 함수는 math.h에 각각 분리되어 있다.
변환 함수는 이름의 어원으로 방향을 알 수 있다. atoi는 ASCII to Integer의 약자로 문자열을 정수로 바꾸고, atof는 문자열을 부동소수점 실수로 바꾸며, itoa는 정수를 문자열로 바꾼다. ceil은 수학 함수로 실수를 그 값보다 크거나 같은 가장 작은 정수로 올림한다. 문자열 처리 함수도 마찬가지다. strcmp는 두 문자열을 비교하고, strcat은 두 문자열을 이어 붙이며, strlen은 길이를 세고, strcpy는 복사하고, strrev는 거꾸로 뒤집는다.
예제
사용자가 입력한 '10'이라는 문자를 숫자로 계산에 쓰려면 stdlib.h의 atoi를 쓴다. 반대로 숫자 10을 화면에 문자로 출력하거나 파일에 남기려면 itoa로 문자열로 바꾼다. 이렇게 'to' 앞은 원본 타입, 'to' 뒤는 바꾸려는 타입으로 읽으면 함수를 헷갈리지 않고 고를 수 있다.
두 사용자가 입력한 이름이 같은지 확인하려면 strcmp로 비교하고, 이름과 성을 하나로 합치려면 strcat으로 연결한다. strcmp의 cmp는 compare(비교), strcat의 cat은 연결을 뜻하므로, 접미사를 보면 기능이 바로 짐작된다.
대표 기출 3문항
C언어에서 문자열을 정수형으로 변환하는 라이브러리 함수는?
atoi( )
atof( )
itoa( )
ceil( )
정답과 해설 보기
정답 ① · C언어에서 문자열을 정수형으로 변환하는 표준 라이브러리 함수를 고르는 문제이다. atoi는 ASCII to Integer의 약자로 stdlib.h에 정의된 함수이며 문자열을 정수로 변환한다.
외부 라이브러리는 프로그래밍 언어가 기본적으로 가지고 있는 라이브러리를 의미하며, 표준 라이브러리는 별도의 파일 설치를 필요로 하는 라이브러리를 의미한다.
라이브러리는 모듈과 패키지를 총칭하며, 모듈이 개별 파일이라면 패키지는 파일들을 모아 놓은 폴더라고 볼 수 있다.
정답과 해설 보기
정답 ③ · 라이브러리의 개념과 구성에 대한 설명 중 틀린 것을 고르는 문제이다. 표준 라이브러리는 프로그래밍 언어가 기본적으로 제공하는 라이브러리이고, 외부 라이브러리는 별도의 설치 파일을 통해 추가로 설치해야 하는 라이브러리이다.
표준 라이브러리는 언어 기본 제공 기능이고 외부 라이브러리는 별도 설치가 필요한 것이므로, 설명이 반대로 된 ③이 틀렸다.
C언어 라이브러리 중 stdlib.h에 대한설명으로 옳은 것은?
문자열을 수치 데이터로 바꾸는 문자 변환함수와 수치를 문자열로 바꿔주는 변환함수 등이 있다.
문자열 처리 함수로 strlen()이 포함되어 있다.
표준 입출력 라이브러리이다.
삼각 함수, 제곱근, 지수 등 수학적인 함수를 내장하고 있다.
정답과 해설 보기
정답 ① · C언어 표준 라이브러리 stdlib.h에 대한 올바른 설명을 고르는 문제이다. stdlib.h에는 atoi, atof처럼 문자열을 수치로 변환하는 함수와 수치를 문자열로 바꾸는 변환 함수, 그리고 malloc, free 같은 동적 메모리 할당 함수가 포함된다.
stdlib.h는 문자열과 수치 간 변환, 동적 메모리 할당 등 범용 함수를 포함하는 표준 라이브러리이다.