[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
'C언어 > C언어 예제' 카테고리의 다른 글
[C언어 소스] strncmp 함수 사용 예제 (부분 문자열 비교) (0) | 2016.05.04 |
---|---|
[C언어 소스] strcmp 함수 사용 예제 (문자열 비교) (0) | 2016.05.04 |
[C언어 소스] strncpy 함수 사용 예제 (부분 문자열 복사) (0) | 2016.05.04 |
[C언어 소스] strcpy_s 함수 사용 예제 (문자열 복사) (0) | 2016.05.04 |
[C언어 소스] strlen 함수 사용 예제 (문자열 길이) (0) | 2016.05.04 |