C言語 バッファのコピー - string.h - [ memcpy ]
2008.11.24 Monday | by LRESULT
バッファのコピーをするには、memcpy()を使います。
結構メジャーな関数で、なにかと使うことになると思います。
コピーするサイズは気をつけないと、メモリ破壊を起こすので注意が必要です。
書式 | void* memcpy( void *s1, const void *s2, size_t n ) |
---|---|
機能 | バッファのコピー |
引数 | void *s1 : コピー先となるバッファ const void *s2 : コピー元となるバッファ size_t n : コピーするバイト数 |
戻り値 | コピー先バッファ(s1)を返します。 |
※ strncpy()と似てますが、「¥0」は追加されません。
int型配列「1,2,3,4,5,6,7,8,9」内の最初の3要素を コピーして表示してみます。 |
---|
#include <stdio.h> #include <string.h> int main(void) { int s1[3]; int s2[] = {1,2,3,4,5,6,7,8,9}; memcpy( s1, s2, sizeof(int) * 3 ); printf( "%d, %d, %d¥n", s1[0], s1[1], s1[2] ); return 0; } |
1, 2, 3 |
---|
と、表示されます。 ちゃんとコピー出来てますね。 ちなみに、int型配列なので、コピーするには sizeof()でバイト数を取得する必要があります。 |