336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

목표 : 


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구현

'Programing - C > C Basic grammar ' 카테고리의 다른 글

060 strcmp, _stricmp 구현해보자  (0) 2017.07.27
059 strcmp, _stricmp  (0) 2017.07.27
057 strcpy, strcpy_s  (0) 2017.07.27
056 puts  (0) 2017.07.27
055 gets, gets_s  (0) 2017.07.27

+ Recent posts