Notice
Recent Posts
Recent Comments
Link
«   2026/05   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Tags
more
Archives
Today
Total
관리 메뉴

우리의 IT

C언어 - 유틸리티 함수 본문

정보처리기사

C언어 - 유틸리티 함수

우리의 IT 2025. 3. 27. 07:14

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