C言語,memcpy()関数でメモリ領域をコピーする

スポンサーリンク

鍛錬 741

C言語,memcpy()関数でメモリ領域をコピーする

メモリ領域のデータを指定したバイト数だけコピーする方法の一つとして、memcpy()関数を使用する方法があります。
 
以下は、memcpy()関数についてです。

#include <string.h>

void *memcpy(void *dest, const void *src, size_t n);
 

引数

以下は、上記の引数についてです。

引数 意味
void *dest コピー先のメモリ領域
const void *src コピー元のメモリ領域
size_t n コピーするバイト数

戻り値

以下は、戻り値についてです。

戻り値
void コピー先のメモリ領域へのポインタ
スポンサーリンク

プログラム

以下は、メモリ領域のデータを指定したバイト数だけコピーするプログラム、test_memcpy.c です。

// include
#include <stdio.h>
#include <string.h>

// main
int main(void)
{
	char str[256] = "";
	char tmp[256] = "";
	
	strncpy(str, "ABCDEFGHI", sizeof(str) - 1);
	
	// 指定したメモリ領域をコピー
	
	// 先頭から3文字をコピー
	memcpy(tmp, str, 3);
	tmp[3] = '\0';
	printf("%s\n", tmp);
	
	// 4文字目から2文字をコピー
	memcpy(tmp, &str[3], 2);
	tmp[2] = '\0';
	printf("%s\n", tmp);
	
	// 6文字目から4文字をコピー
	memcpy(tmp, &str[5], 4);
	tmp[4] = '\0';
	printf("%s\n", tmp);
	
	return 0;
}
スポンサーリンク

実行結果

以下は、プログラム test_memcpy.c を実行しています。

***@ubuntu:~/***/test/c$ 
***@ubuntu:~/***/test/c$ gcc -Wall -Wextra test_memcpy.c -o test_memcpy
***@ubuntu:~/***/test/c$ ./test_memcpy
ABC
DE
FGHI

 
上記に示した通り、メモリ領域を指定したバイト数だけコピーすることができました。

タイトルとURLをコピーしました