우리의 IT
C언어 - 유틸리티 함수 본문
✅ C 언어 - 유틸리티 함수 (stdlib.h)
✔ 유틸리티 함수란?
C 언어에서 다양한 기능을 수행하는 범용적인 함수를 의미하며, 일반적으로 stdlib.h 헤더 파일에 포함됨.
✔ 유틸리티 함수의 주요 기능
📌 난수 생성 (rand())
📌 형 변환 (atoi(), atof())
📌 동적 메모리 관리 (malloc(), free())
📌 프로그램 종료 (exit())
📌 정렬 및 탐색 (qsort(), bsearch())
🔹 1. 난수 생성 (rand(), srand())
📌 난수(랜덤 값)를 생성할 때 사용
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
srand(time(NULL)); // 난수 시드 설정 (현재 시간 기준)
for (int i = 0; i < 5; i++) {
printf("난수: %d\n", rand() % 100); // 0~99 범위의 난수 생성
}
return 0;
}
✅ 출력 예시 (매 실행마다 다름)
난수: 42
난수: 87
난수: 13
난수: 95
난수: 68
✅ 주요 함수
함수 설명
| rand() | 0부터 RAND_MAX(32767) 사이의 난수 생성 |
| srand(seed) | 난수 생성기 초기화 (시드 설정) |
🔹 2. 숫자 변환 (atoi(), atof())
📌 문자열을 숫자로 변환하는 함수
#include <stdio.h>
#include <stdlib.h>
int main() {
char str1[] = "123";
char str2[] = "3.14";
int num = atoi(str1); // 문자열 → 정수 변환
double pi = atof(str2); // 문자열 → 실수 변환
printf("정수: %d\n", num);
printf("실수: %.2f\n", pi);
return 0;
}
✅ 출력
정수: 123
실수: 3.14
✅ 주요 함수
함수 설명
| atoi(str) | 문자열을 int로 변환 |
| atof(str) | 문자열을 double로 변환 |
| atol(str) | 문자열을 long으로 변환 |
| strtol(str, endptr, base) | 문자열을 long으로 변환 (진법 지정 가능) |
| strtod(str, endptr) | 문자열을 double로 변환 |
🔹 3. 동적 메모리 관리 (malloc(), calloc(), free())
📌 실행 중에 메모리를 동적으로 할당하는 함수
#include <stdio.h>
#include <stdlib.h>
int main() {
int *arr = (int *)malloc(5 * sizeof(int)); // 정수 5개 크기 할당
if (arr == NULL) {
printf("메모리 할당 실패\n");
return 1;
}
for (int i = 0; i < 5; i++) {
arr[i] = i + 1;
printf("%d ", arr[i]);
}
free(arr); // 메모리 해제
return 0;
}
✅ 출력
1 2 3 4 5
✅ 주요 함수
함수 설명
| malloc(size) | 지정한 크기만큼 메모리 할당 |
| calloc(n, size) | 초기화된 메모리 할당 |
| realloc(ptr, newSize) | 메모리 크기 변경 |
| free(ptr) | 할당된 메모리 해제 |
🔹 4. 프로그램 종료 (exit())
📌 exit()를 사용하면 프로그램을 즉시 종료할 수 있음
#include <stdio.h>
#include <stdlib.h>
int main() {
int num;
printf("양수를 입력하세요: ");
scanf("%d", &num);
if (num < 0) {
printf("음수를 입력하면 종료됩니다.\n");
exit(1); // 비정상 종료 (1)
}
printf("입력한 숫자: %d\n", num);
return 0;
}
✅ 출력 예시
양수를 입력하세요: -5
음수를 입력하면 종료됩니다.
✅ 주요 함수
함수 설명
| exit(status) | 프로그램 종료 (0: 정상, 1: 오류) |
| abort() | 강제 종료 |
| atexit(func) | 프로그램 종료 시 실행할 함수 등록 |
🔹 5. 정렬과 탐색 (qsort(), bsearch())
📌 배열을 정렬하거나 특정 요소를 찾을 때 사용
📌 (1) qsort() - 퀵 정렬
#include <stdio.h>
#include <stdlib.h>
int compare(const void *a, const void *b) {
return (*(int *)a - *(int *)b);
}
int main() {
int arr[] = {5, 3, 8, 1, 2};
int size = sizeof(arr) / sizeof(arr[0]);
qsort(arr, size, sizeof(int), compare); // 정렬
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
return 0;
}
✅ 출력
1 2 3 5 8
📌 (2) bsearch() - 이진 탐색
#include <stdio.h>
#include <stdlib.h>
int compare(const void *a, const void *b) {
return (*(int *)a - *(int *)b);
}
int main() {
int arr[] = {1, 2, 3, 5, 8};
int size = sizeof(arr) / sizeof(arr[0]);
int key = 3;
int *result = (int *)bsearch(&key, arr, size, sizeof(int), compare);
if (result != NULL)
printf("찾은 값: %d\n", *result);
else
printf("값을 찾을 수 없습니다.\n");
return 0;
}
✅ 출력
찾은 값: 3
✅ 주요 함수
함수 설명
| qsort(arr, size, elem_size, compare) | 퀵 정렬 |
| bsearch(key, arr, size, elem_size, compare) | 이진 탐색 |
🚀 정리
✅ C 유틸리티 함수 주요 기능
✔ 난수 생성 → rand(), srand()
✔ 숫자 변환 → atoi(), atof(), strtol()
✔ 동적 메모리 관리 → malloc(), free()
✔ 프로그램 종료 → exit(), abort()
✔ 정렬 및 탐색 → qsort(), bsearch()
✅ stdlib.h에 포함된 다양한 유틸리티 함수를 활용하면 효율적인 프로그래밍이 가능합니다! 🚀
'정보처리기사' 카테고리의 다른 글
| JAVA - 배열 (0) | 2025.03.27 |
|---|---|
| C언어 - 포인터 (0) | 2025.03.27 |
| C언어 - 표준함수 (0) | 2025.03.27 |
| C언어 - 함수 (0) | 2025.03.27 |
| C 언어 - 1차원 배열, 2차원 배열, 문자열 동시 사용 (0) | 2025.03.26 |