🔧 文字列 ・ string.h ・ C89
memcpy の使い方void *memcpy(void *dest, const void *src, size_t n);
メモリ領域を指定バイト数だけコピーする。文字列に限らずあらゆるデータのコピーに使えstrcpyより高速だが、終端\0の概念が無く、コピー元とコピー先の領域が重なると未定義動作になる。 コンパイラによっては短い固定長のコピーをインライン展開して最適化することも多い高速な関数。
#include <stdio.h>
#include <string.h>
int main(void) {
int src[3] = {1, 2, 3};
int dst[3];
memcpy(dst, src, sizeof src);
printf("%d\n", dst[1]);
return 0;
}
⚠️ コピー元とコピー先が重なる領域の場合は未定義動作。重なる可能性があるならmemmoveを使う。
アプリの関数リファレンスで引く(無料・登録不要) 関数一覧へ
memcpy と一緒に使う関数memcmp
memmove
memset
memset_explicit
strcat
strchr
strcmp
strcoll
strcpy
strcspn
strdup
strerror
strlen
strncat
strncmp
strncpy
もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。