사용범위
Windows, Unix 등 모든 OS에서 사용가능한 표준 API 함수
기능
C언어 표준 함수로 특정 문자까지의 데이터를 복사할때 사용한다.
헤더
#include <string.h>
※ memccpy 함수 사용시 string.h 파일을 include 하지 않는다면 컴파일시 error 발생 ※
함수
void* memccpy(void* dest, const void* src, int val, size_t size);
파라미터
- void* dest
- 복제된 데이터를 저장할 버퍼를 입력한다.
- const void* src
- dest 에 복제할 데이터 버퍼를 입력한다.
- int val
- 복제 도중 src 에서 발견하면 중단할 문자를 입력한다.
- 문자 val 을 만나면 val 까지 복사하고 중단한다.
- 예를 들어 'a' 같은 작은 따옴표를 사용한 문자 혹은 ascii 코드 97 로 입력해도 된다. ('a' = 97)
- size_t size
- 복제할 데이터의 크기를 byte 단위로 입력한다.
반환값 (return)
val 을 만나지 못하는 경우 : NULL 을 반환한다. ( 모든 데이터 복사 완료 )
val 을 만나서 복제가 중단된 경우 : 마지막으로 복사된 데이터주소 + 1 의 주소값을 반환한다. ( val 문자까지만 복사 )
<소스 코드 1>
#include <stdio.h>
#include <string.h>
int main() {
char buffer1[32] = "I'm unknown function";
char buffer2[32] = "I'm memccpy FUNCTION";
char *ret;
printf("(Before) %s\n", buffer1);
// 'F' 문자를 만나면 'F' 까지만 복사하고 중단
ret = memccpy(buffer1, buffer2, 'F', sizeof(buffer2));
printf("(After) %s\n", buffer1);
if(ret != NULL) {
printf("Copy Stopped. ret[%s]\n", ret);
} else {
printf("All Data Copy Success !\n");
}
return 0;
}
※ 실행 결과 (소스 코드 1)
(Before) I'm unknown function
(After) I'm memccpy Function
Copy Stopped. ret[unction]
<소스 코드 2>
#include <stdio.h>
#include <string.h>
int main() {
char buffer1[32] = "I'm unknown function";
char buffer2[32] = "I'm memccpy FUNCTION";
char *ret;
printf("(Before) %s\n", buffer1);
// '#' 문자를 만나면 '#' 까지만 복사하고 중단
ret = memccpy(buffer1, buffer2, '#', sizeof(buffer2));
printf("(After) %s\n", buffer1);
if(ret != NULL) {
printf("Copy Stopped. ret[%s]\n", ret);
} else {
printf("All Data Copy Success !\n");
}
return 0;
}
※ 실행 결과 (소스 코드 2)
(Before) I'm unknown function
(After) I'm memccpy FUNCTION
All Data Copy Success !
반응형
'C언어 > string.h' 카테고리의 다른 글
[C언어] strtok 함수 (문자열 자르기) (2) | 2022.09.20 |
---|---|
[C언어] memcpy 함수 (메모리 복사) (1) | 2022.09.19 |
[C언어] strcat 함수 (문자열 연결) (0) | 2022.09.15 |
[C언어] strlen 함수 (문자열 길이 확인 함수) (0) | 2022.09.14 |
[C언어] strstr 함수 (문자열 검색 함수) (8) | 2022.09.14 |