1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
#include <stdio.h>
int main()
{
int data_size = 0;
int temp = 0x12345678;
int data = 0x0000;
void *p_data = &data;
printf("복사할 크기 입력 (1, 2, 4) : ");
scanf("%d", &data_size);
if (data_size == sizeof(char)) *(char *)p_data = (char)temp;
else if (data_size == sizeof(short)) *(short *)p_data = (short)temp;
else if (data_size == sizeof(int)) *(int *)p_data = (int)temp;
printf("복사 결과 : %X\n", data);
return 0;
}
|
cs |
위 코드 처럼 조건문에 따라 복사할 사이즈 크기가 다르게 복사 되는 코드가 있습니다.
memcpy()함수를 이용한다면 조건문을 이용하지 않고 동일한 동작을 하게 만들 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
#include <stdio.h>
#include <memory.h>
int main()
{
int data_size = 0;
int temp = 0x12345678;
int data = 0x0000;
void *p_data = &data;
printf("복사할 크기 입력 (1, 2, 4) : ");
scanf("%d", &data_size);
// temp의 시작 주소에서 p_data가 가리키는 주소로 data_size만큼 메모리를 복사한다.
memcpy(p_data, &temp, data_size);
printf("복사 결과 : %X\n", data);
return 0;
}
|
cs |
'C > C언어 코드 기록' 카테고리의 다른 글
C언어 파일 입출력 (텍스트 파일 생성) (0) | 2022.03.15 |
---|---|
sprintf()함수 가변적으로 사용하기. (0) | 2021.12.23 |
문자열 복사 함수 만들기. (strcpy( )함수와 동일한 기능) (0) | 2021.08.09 |
문자열 연결 함수 만들기. (strcat( )함수와 동일한 기능) (0) | 2021.08.09 |
문자열 비교 함수 만들기. (strcmp( )함수와 동일한 기능) (0) | 2021.08.09 |