본문 바로가기

언어/C언어 - 300제

058 - 문자열을 복사하는 함수 만들기

=================================================
#include <stdio.h>

char* my_strcpy(char*,const char*);

int main(void)
{
        char str[100];

        my_strcpy(str,"kangdeokhun");

        puts(str);

        return 0;
}

char* my_strcpy(char* dest, const char* src)
{
        char* pdest=dest;       // dest의 주소를 저장

        if(dest == (int)NULL || src == (int)NULL){
                if(*dest != (int)NULL){
                        *dest = (int)NULL;
                }
                return NULL;
        }

        do{
                *dest++ = *src;
        }while(*src++ != (int)NULL);

        return pdest;
}
=================================================
책의 소스는 복사가 성공 했을 때, dest 주소에서 시작되는 문자열의 마지막 문자 주소가 리턴된다.
하지만본래 strcpy함수는 dest주소에서 시작되는 문자열의 처음 문자 주소를 리턴하므로
char* pdest = dest;
위의 명령문을 추가하였다.