언어 자료구조 알고리즘/C언어 예제

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

언제나휴일 2016. 4. 3. 12:30
반응형

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



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


문자열 복사하기(dest:복사할 버퍼, dsize:버퍼 길이, src: 원본 문자열, n:복사할 문자 개수)

origin:= dest

반복(dsizen이 참이고 dest 가리키는 곳에 src가 가리키는 문자 대입)//대입한 결과가 참이면 반복

    destsrc를 다음 위치로 증가, dsize 1감소, n 1감소

origin 반환

 

소스코드

//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;

}


문자열 길이 계산 함수 만들기

문자열 비교 함수 만들기

부분 문자열 비교 함수 만들기

문자열 복사 함수 만들기

부분 문자열 복사 함수

문자열 복사, 버퍼 오버플로우 방지

부분 문자열 복사, 버퍼 오버플로우 방지


반응형