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

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

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

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



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


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

dsize 1감소

origin:= dest

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

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

dest가 가리키는 곳에 종료 문자 대입

origin 반환

 

소스코드

//13. 문자열 복사 - 버퍼 오버플로우 방지

#include <stdio.h>

 

char *mystrcpy_s(char *dest, size_t dsize, const char *src);

int main(void)

{

    char source[100] = "Hello World";

    char dest[100];

   

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

    mystrcpy_s(dest, sizeof(dest), source);

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

 

    return 0;

}

 

char *mystrcpy_s(char *dest, size_t dsize, const char *src)

{

    char *origin;

 

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

 

    //dsize 0이 아니고 복사한 문자가 참이면 반복

    for (origin = dest; (dsize) && (*dest = *src); dest++, src++, dsize--);

    *dest = 0;//종료 문자 복사

    return origin;

}


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

문자열 비교 함수 만들기

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

문자열 복사 함수 만들기

부분 문자열 복사 함수

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

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



반응형