Это расширенный комментарий, а не ответ. Пример MSDN - плохой, смущенный двумя одинаковыми исходными строками: «Быстрая коричневая лиса прыгает через ленивую собаку» и «Быстрая коричневая собака прыгает через ленивую лису». Моя MS Visual C дает правильный результат с memcpy()
, когда источник и место назначения перекрываются, но поскольку @PaulRoub написал (теперь удален), только потому, что один компилятор правильно его кодирует, это не значит, что другой будет.
#include <stdio.h>
#include <string.h>
int main()
{
char str [] = "abcdefghijklmnopqrstuvwxyz";
printf ("%s\n", str);
memcpy (str, str+1, 25); // copy down
printf ("%s\n", str);
memcpy (str+1, str, 25); // copy up
printf ("%s\n", str);
return 0;
}
выход программы
abcdefghijklmnopqrstuvwxyz
bcdefghijklmnopqrstuvwxyzz
bbcdefghijklmnopqrstuvwxyz
Они отличаются только когда перекрытие источника и назначения. – Barmar
yes Barmar, но в перекрывающихся примерах я не вижу разницы. – CaTx
Ох спасибо за отрицательные моменты ребята. предлагаемая ссылка просто не отвечает на мой вопрос. Я спрашиваю о статье о MSDN, а не о самих функциях. – CaTx