midas+son의 크리에이티브(creative) 이야기

#include <iostream>


using namespace std;


void CopyStr(char* dst, int descSize, const char* src)

{

const char* tempSrc = src; //주소 복사

while (*tempSrc != '\0')         //널문자가 나올 때까지 루프

{

tempSrc++;     //주소 위치 증가

}

int size = tempSrc - src;   //루프된 주소와 원본 주소 위치를 빼주면 사이즈가 나옴


//dst 메모리 초기화

char* tempDst = dst;   //주소 복사

for (int i = 0; i < descSize; i++)        //배열 사이즈 만큼 루프

{

*tempDst++ = '\0';              //널문자로 초기화하며서 주소 증가

}


for (int i = 0; i < size; i++, dst++)   //위에서 구한 원본 사이즈 만큼 루프, 복사할 주소인 dst도 증가

{

*dst = *(--tempSrc);             //tempSrc는 처음에 '\0'이 들어 있으므로 먼저 빼주면서 진행. 내부 값을 복사

}

}


int main()

{

char src[] = "hello world";      //원본문자

char dst[512];                     //복사할 공간

CopyStr(dst, sizeof(dst), src);  // 복사 함수

        //출력

cout << dst << endl;    

getchar();

}


입력 : hello world

출력 : dlrow olleh



출처 : 내 머리, 내 손