[C언어] 표준 함수 직접 구현해보기

강지원·2025년 1월 11일

리눅스 기반 C언어

목록 보기
15/24

표준함수 직접 구현해보기

1. strcpy

1-1 strcpy 함수란?

문자열을 카피하는 함수이다.

실행결과

1-2 strcpy 구현해보기

while 이용

char *strcpy(char *dest, const char *src){

        while(*src){

                *dest++ = *src++;
        }
        return dest;
}

for 이용

char *strcpy(char *dest, const char *src){

		for(int i = 0; i <strlen(src);i ++){
                dest[i] = src[i];
        }
        return dest;
}

2. strlen

2-1 strlen 함수란?

const char* 타입의 문자열을 받아서 해당 문자열의 길이를 반환하는 함수

2-2 strlen 구현해보기

size_t strlen(const char *s){

        size_t count = 0;
        if(s != NULL){

                for(int i=0;;i++){
                        if(*(s+i) == 0){
                                break;
                        }else{
                                count++;
                        }
                }
        }else{
                return -1;
        }
        return count;
}

실행결과

3. strcmp

3-1 strcmp 함수란?

s1 > s2 이면 양수를 반환

s1 = abcd, s2 = abc

s1 = s2 이면 0을 반환

s1 = abc, s2 = abc

s1 < s2 이면 음수를 반환

s1 = abcd, s2 = abcdf

3-2 strcmp 구현해보기

int strcmp(const char *s1, const char *s2){

        int s1len = strlen(s1);
        int s2len = strlen(s2);
        int val = 0;
        int len = 0;
        if(s1len >= s2len){
                len = s1len;
        }else{
                len = s2len;
        }

        for(int i = 0; i < len;i++){

                val = *(s1+i) - *(s2+i);
                if(*(s1+i) == 0){
                        return -(*(s2+i));
                }else if(*(s2+i)==0){
                        return *(s1+i);
                }

                if(val != 0){
                        return val;
                }
        }
        return 0;
}

코딩테스트 문제 풀어보기

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

long long solution(int price, int money, int count){
        
        int money_sum = 0;
        int change = 0;
        for(int i = 1; i <= count; i++){

                money_sum += price * i;
        }
        change = money_sum - money;
        if(change > 0){
                return change;
        }else{
                return 0;
        }
}
int main(){

        int price = 0;
        int money = 0;
        int count = 0;

        printf("가격을 입력하세요 : ___\b\b\b");
        scanf("%d", &price);
        getchar();

        printf("가진돈을 입력하세요 : ___\b\b\b");
        scanf("%d", &money);
        getchar();
        
        printf("몇 번 이용할 지 입력하세요 : ___\b\b\b");
        scanf("%d", &count);
        getchar();

        printf("%lld\n",solution(price,money,count));
}

0개의 댓글