일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 유튜브 동영상 강의
- 강의
- 독립기념관
- 졸업 작품 소재
- 실습으로 다지는 c#
- 추천
- 동영상
- 안드로이드 앱 개발
- 무료 동영상 강의
- 실습
- 프로젝트
- 네트워크 프로그래밍
- 산책하기 좋은 곳
- 소켓 통신
- 캡슐화
- 표준 라이브러리 함수
- C++
- 동영상 강의
- Windows Forms
- 알고리즘
- c언어
- 언제나휴일
- 파이썬
- 언제나 휴일
- c#
- 클래스 다이어그램
- 소스 코드
- 원격 제어 프로그램
- 충남 천안
- 표준 입출력
Archives
- Today
- Total
프로그래밍 언어 및 기술 [언제나휴일]
[C언어 소스] 문자열 복사하는 함수 만들기(버퍼 오버플로우 방지) 본문
알고리즘
문자열 복사하기(dest:복사할 버퍼, dsize:버퍼 길이, src: 원본 문자열)
….dsize 1감소
…..origin:= dest
….반복(dsize가 참이면서 dest가 가리키는 곳에 src가 가리키는 문자 대입)//대입한 결과가 참이면 반복
……..dest와 src를 다음 위치로 증가, dsize 1감소
….dest가 가리키는 곳에 종료 문자 대입
….origin 반환
소스 코드
//문자열 복사 - 버퍼 오버플로우 방지
#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;
}
언제나휴일 여행 및 산책
'C & C++ > C언어 예제 및 소스' 카테고리의 다른 글
[C언어 소스] 부분 문자열 복사하는 함수 만들기(버퍼 오버플로우 방지) (0) | 2025.01.09 |
---|---|
[C언어 소스] 부분 문자열 복사하는 함수 만들기 (0) | 2025.01.09 |
[C언어 소스] 문자열 복사하는 함수 만들기 (0) | 2025.01.09 |
[C언어 소스] 문자열 비교하는 함수 만들기 (0) | 2025.01.09 |
[C언어] n 개의 정수 중에 홀수의 합계 구하는 함수 만들기 (0) | 2025.01.08 |
[C언어 소스] 속이 빈 삼각형 출력 (0) | 2025.01.08 |
[C언어 소스] 산봉우리 출력 (0) | 2025.01.08 |
[C언어 소스] 숫자 피라미드 (0) | 2025.01.08 |