본문 바로가기
개념/혼자 공부하는 C언어

chapter 12) strcpy()와 기능이 같은 함수 구현

by kiseno 2024. 8. 20.
728x90
반응형
SMALL
#include <stdio.h>

char *my_strcpy(char *pd, char *ps);

int main(void){
    char str[80] = "strawberry";

    printf("before string :%s\n", str);
    my_strcpy(str, "apple");
    printf("change letter : %s\n", str);
    printf("another insert string : %s\n", my_strcpy(str, "kiwi"));

    return 0;
}

char *my_strcpy(char *pd, char *ps){
    char *po = pd;

    while(*ps != '\0'){
        *pd = *ps;
        pd++;
        ps++;
    }
    *pd = '\0';

    return po;
}

main() 함수
1-1. 크기가 80인 char 배열 str을 선언하고 "strawberry"로 초기화
1-2. "before string :%s\n"를 사용하여 초기 문자열 "strawberry" 출력
1-3. my_strcpy 함수를 호출하여 str 배열에 "apple" 문자열 복사 후 변경된 문자열 출력
1-4. my_strcpy 함수를 다시 호출하여 str 배열에 "kiwi" 문자열 복사 후 변경된 문자열 출력. 이때, my_strcpy 함수의 반환값(복사된 문자열의 주소)을 직접 printf 함수에 전달하여 출력

my_strcpy 함수
2-1. char 포인터 pd(목적지 문자열의 주소)와 char 포인터 ps(출발지 문자열의 주소)를 매개변수로 받음
2-2. char 포인터 po를 선언하고 pd의 초기 주소를 저장 (복사된 문자열의 시작 주소를 나중에 반환하기 위해)
2-3. while 루프를 사용하여 ps가 가리키는 문자열의 끝까지 각 문자를 pd가 가리키는 배열에 복사. 문자열의 끝에 도달하면 루프 종료
2-4. 문자열 복사 후 pd에 널 문자('\0') 추가하여 문자열 끝을 표시
2-5. 복사된 문자열의 시작 주소인 po 반환

728x90
반응형
LIST