C언어/C언어 예제

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

언제나휴일 2016. 5. 4. 07:17
반응형

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


#include <assert.h>

#include <string.h>

#include <stdio.h>

 

void ehstrncpy_s(char *dest,size_t size, const char *source, size_t n)

{

    size_t i;

    assert(size >= n);//size n보다 크거나 같아야 함

    for (i = 0; i<n; i++)//i n보다 작으면 반복

    {

        dest[i] = source[i];

    }   

}

void main(void)

{

    char *src = "1234567890";

    char buffer[50] = "aaaaaaa";

 

    printf("== strncpy_s 사용 ==\n");

    strncpy_s(buffer, sizeof(buffer), src, 5);

    printf("buffer: %s \n", buffer );

    strncpy_s(buffer, sizeof(buffer), src + 2, 5);

    printf("buffer: %s \n", buffer);

 

    printf("== ehstrncpy_s 사용 ==\n");

    ehstrncpy_s(buffer, sizeof(buffer), src, 5);

    ehstrncpy_s(buffer, sizeof(buffer), src + 2, 5);

    printf("buffer: %s \n", buffer);

    printf("buffer: %s \n", buffer);

}

 

출력

== strncpy 사용 ==

buffer: 12345aa

buffer: 34567aa

== ehstrncpy 사용 ==

buffer: 12345aa

buffer: 34567aa

언제나 휴일 티스토리 바로가기

언제나 휴일 유튜브 채널 바로가기

반응형