C언어/C언어 예제

[C언어 소스] 부분 문자열 복사 - 버퍼 오버플로우 방지

언제나휴일 2016. 4. 12. 19:02
반응형

[C언어 소스] 부분 문자열 복사 - 버퍼 오버플로우 방지

언제나 휴일 티스토리


[C언어 소스] 부분 문자열 복사 - 버퍼 오버플로우 방지

15. 부분 문자열 복사 - 버퍼 오버플로우 방지.c

//15. 부분 문자열 복사하는 함수 만들기 - 버퍼 오버플로우 방지

#include <stdio.h>

#include <string.h>

char *mystrncpy_s(char *dest, size_t dsize, const char *src, size_t n);

int main(void)

{

    char source[100] = "Hello World";

    char dest[100] = "abcde Yahoo";

   

    printf("원본 문자열:%s 5개 문자 복사\n", source);

    printf("복사 전 현재 결과 문자열:%s\n", dest);

    mystrncpy_s(dest, sizeof(dest), source, 5);

    printf("복사 후 결과 문자열: %s\n", dest);

    return 0;

}

 

char *mystrncpy_s(char *dest, size_t dsize, const char *src, size_t n)

{

    char *origin;

    dsize--;//맨 마지막에 종료 문자('\0')를 추가해야 하므로 버퍼 길이를 1 감소   

    for (origin = dest; dsize && n && (*dest = *src); dest++, src++, n--, dsize--);//dsize n이 참이고 복사한 문자가 참이면 반복

    return origin;

}

반응형