C 기본 문법 – 함수 – 4편: 표준 라이브러리 함수 완전 정복
안녕하세요, 여러분! 😊
이번 시간에는 C 언어의 핵심 기능 중 하나인 표준 라이브러리 함수에 대해 알아보겠습니다.
C 언어는 기본적인 문법 외에도, 자주 쓰이는 기능들을 미리 만들어진 함수의 형태로 제공하는데요,
이걸 바로 표준 라이브러리 함수라고 부른답니다.
🧠 비유하자면,
표준 라이브러리 함수는 마치 생활용품이 모두 구비된 부엌과 같아요.
칼, 냄비, 도마, 전자레인지 등 필요한 도구를 이미 갖춰놔서,
우리는 요리(프로그래밍)만 하면 되는 셈이죠!
그럼, 대표적인 표준 라이브러리 함수들과 사용하는 방법을 차근차근 알아볼게요!
함수별 용도와 실제 사용 예제까지 꼼꼼하게 담았습니다 💡
1. 표준 라이브러리란?
C 표준 라이브러리는 ANSI와 ISO에서 정의한 공식 함수 모음집입니다.
헤더 파일을 통해 포함하며, 다양한 범주의 기능을 제공합니다.
대표적인 헤더 파일들
헤더 | 기능 |
---|---|
<stdio.h> |
표준 입출력 |
<stdlib.h> |
일반적인 유틸리티 함수 (메모리 할당, 숫자 변환 등) |
<string.h> |
문자열 처리 |
<math.h> |
수학 계산 함수 |
<ctype.h> |
문자 판별 및 변환 |
<time.h> |
시간과 날짜 처리 |
2. <stdio.h>
– 입출력 함수
주요 함수
함수 | 설명 |
---|---|
printf() |
출력 함수 |
scanf() |
입력 함수 |
putchar() |
문자 출력 |
getchar() |
문자 입력 |
예제
#include <stdio.h>
int main() {
int age;
printf("나이를 입력하세요: ");
scanf("%d", &age);
printf("당신의 나이는 %d살입니다.
", age);
return 0;
}
💡
%d
,%s
,%f
등 서식 지정자를 잘 활용해야 합니다!
3. <stdlib.h>
– 범용 함수
주요 함수
함수 | 설명 |
---|---|
malloc() , free() |
동적 메모리 할당/해제 |
atoi() |
문자열 → 정수 |
atof() |
문자열 → 실수 |
rand() , srand() |
난수 생성 |
예제: 난수 생성
#include <stdlib.h>
#include <time.h>
int main() {
srand(time(NULL)); // 시드 설정
int r = rand() % 100 + 1;
printf("랜덤 숫자: %d
", r);
return 0;
}
4. <string.h>
– 문자열 처리
주요 함수
함수 | 설명 |
---|---|
strlen() |
문자열 길이 반환 |
strcpy() |
문자열 복사 |
strcmp() |
문자열 비교 |
strcat() |
문자열 연결 |
예제
#include <string.h>
int main() {
char name[20] = "홍";
strcat(name, "길동"); // name = "홍길동"
printf("이름: %s
", name);
return 0;
}
🎯 문자열을 다룰 땐 항상 배열의 크기를 고려하세요!
5. <math.h>
– 수학 함수
주요 함수
함수 | 설명 |
---|---|
sqrt() |
제곱근 |
pow() |
거듭제곱 |
sin() , cos() , tan() |
삼각 함수 |
abs() |
절댓값 |
ceil() , floor() |
올림, 내림 |
예제
#include <math.h>
int main() {
double n = 2.0;
printf("루트2: %.4f
", sqrt(n));
printf("2의 3제곱: %.1f
", pow(n, 3));
return 0;
}
📌
sqrt()
같은 함수는double
형을 반환하니, 형 변환에 주의하세요!
6. <ctype.h>
– 문자 분석
주요 함수
함수 | 설명 |
---|---|
isalpha() |
알파벳 여부 판별 |
isdigit() |
숫자 여부 판별 |
toupper() |
대문자로 변환 |
tolower() |
소문자로 변환 |
예제
#include <ctype.h>
int main() {
char ch = 'a';
if (isalpha(ch)) {
printf("알파벳입니다: %c
", ch);
printf("대문자: %c
", toupper(ch));
}
return 0;
}
7. <time.h>
– 시간과 날짜
주요 함수
함수 | 설명 |
---|---|
time() |
현재 시간 반환 |
localtime() |
구조체로 변환 |
strftime() |
날짜 형식 포맷 |
clock() |
프로그램 실행 시간 측정 |
예제: 현재 시간 출력
#include <time.h>
int main() {
time_t now = time(NULL);
struct tm *t = localtime(&now);
printf("현재 시각: %d년 %d월 %d일
", t->tm_year+1900, t->tm_mon+1, t->tm_mday);
return 0;
}
8. 표준 라이브러리 함수의 장점
장점 | 설명 |
---|---|
재사용성 | 자주 쓰이는 기능을 따로 구현할 필요 없음 |
안정성 | 오랜 테스트를 거쳐 신뢰도가 높음 |
성능 | 대부분 OS 수준 최적화 |
문서화 | 사용 방법이 잘 정리되어 있음 (man 페이지 등) |
✅ 표준 라이브러리 함수 요약
카테고리 | 주요 함수 |
---|---|
입출력 (<stdio.h> ) |
printf() , scanf() |
유틸리티 (<stdlib.h> ) |
rand() , atoi() , malloc() |
문자열 (<string.h> ) |
strlen() , strcpy() , strcmp() |
수학 (<math.h> ) |
sqrt() , pow() , abs() |
문자 분석 (<ctype.h> ) |
isalpha() , toupper() |
시간 (<time.h> ) |
time() , localtime() |
⚠️ 표준 라이브러리 함수 사용 시 주의할 점
주의사항 | 설명 |
---|---|
헤더파일 반드시 포함 | 해당 함수가 포함된 헤더가 있어야 컴파일 가능 |
데이터 타입 확인 | 함수의 반환형과 인자형이 기대한 것과 다를 수 있음 |
문자열 처리 주의 | strcpy() 등은 버퍼 오버플로우 위험 존재 |
난수는 srand() 로 초기화 |
rand() 사용 전에 꼭 srand(time(NULL)) 호출 |
마무리하며 💬
표준 라이브러리 함수는 C 언어 개발자의 든든한 조력자입니다!
필요한 기능이 있을 때 직접 구현하지 말고, 표준 함수부터 먼저 찾아보는 습관을 들여보세요.
🎯 마치 레고 블록처럼, 이미 준비된 조각들을 조립해서 멋진 프로그램을 만들 수 있어요!
다음 시간에는 사용자 정의 함수와 표준 라이브러리 함수의 차이점,
그리고 라이브러리 함수 내부 구현 방식에 대한 간단한 이해도 도와드릴게요 😊
함께 공부해서 더 강해지는 C 언어!
계속해서 파워업해볼까요? 💪🔥