Programing - C/C Basic grammar

058 strcpy 구현해보기

junmoyo 2017. 7. 27. 23:52

목표 : 


string.h를 사용하지 않기 위해서


strycpy, strcpy_s 를 직접 구현해 보고 차이점을 확인해보자.



소스코드 :

#include <stdio.h>


char* strcpy(char *pDest, char* pSource);

char* strcpy_s(char *pDest, int BufferSize, char* pSource);


int main(void)

{

char*pSource = "오늘의 포스팅!!\n";

char Buffer1[256] = { 0, };

char Buffer2[256] = { 0, };


strcpy(Buffer1, pSource);

strcpy_s(Buffer2, sizeof(char) * 256, pSource);



printf(" buffer1의 내용 : %s", Buffer1);

printf(" buffer2의 내용 : %s", Buffer2);




return 0;

}


char* strcpy_s(char *pDest, int BufferSize, char* pSource)

{

int count = 0;

for (count = 0; count < BufferSize; count++) // 문자열 끝을 알리는 널이 없더라도 버퍼 사이즈를 카피하기때문에 문제가 

{                                                  // 되지 않는 안전장치가 들어 있는 셈입니다!!

pDest[count] = pSource[count];

if (pSource[count] == '\0')//문자열 끝이라면

{

break;

}

}


return pDest;

}



char* strcpy(char *pDest, char* pSource)

{

int count = 0;

for (count = 0; ; count++) // 만약 문자열 끝이 없다면 무한루프돌고 그러다 버퍼 사이즈를 넘겨 오버플로가 되서...ㅠㅠ

{                             // 프로그램이 죽습니다...

pDest[count] = pSource[count];

if (pSource[count] == '\0')//문자열 끝이라면

{

break;

}

}


return pDest;

}




결과


#c언어입문, #c언어, #프로그램입문,#strcpy구현, #strcpy_s구현