memmove |
| ||||
memmove | |
ヘッダ | #include <string.h> |
形 式 | void *memmove(void *s1, const void *s2, size_t n); |
機 能 | s2が指すオブジェクトの先頭n文字をs1が指すオブジェクトにコピーする。コピー元とコピー先が重なる場合も正しくコピーする。 |
返却値 | s1の値を返す。 |
void *memmove(void *s1, const void *s2, size_t n) { char *p1 = (char *)s1; const char *p2 = (const char *)s2; if (p1 < p2 && p1 < p2 + n) for (p1 += n, p1 += n; n > 0; n--) /* 後ろからコピー */ *p1-- = *p2--; else for ( ; n > 0; n--) /* 前からコピー */ *p1++ = *p2++; return (s1); }