>>886
intの配列の場合

if (k < n / 2) {
memcpy(work, array, k * sizeof(int));
memmove(array, array + k, (n - k) * sizeof(int));
memcpy(array + n - k, work, k * sizeof(int));
}
else if (k <= n) {
memcpy(work, array + k, (n - k) * sizeof(int));
memmove(array + n - k, array, k * sizeof(int));
memcpy(array, work, (n - k) * sizeof(int));
}