2015-01-02 10 views
-2

Я прочитал статью MSDN на memmove здесь:memmove (MSDN) - быстрая коричневая лиса/собака

http://msdn.microsoft.com/en-us/library/aa246469%28v=vs.60%29.aspx

, и я не могу сказать, на их примере, как memmove отличается от тетсра. они оба дают один и тот же результат, хотя пример показывает разницу. пожалуйста помоги.

+0

Они отличаются только когда перекрытие источника и назначения. – Barmar

+0

yes Barmar, но в перекрывающихся примерах я не вижу разницы. – CaTx

+0

Ох спасибо за отрицательные моменты ребята. предлагаемая ссылка просто не отвечает на мой вопрос. Я спрашиваю о статье о MSDN, а не о самих функциях. – CaTx

ответ

1

Это расширенный комментарий, а не ответ. Пример 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 

 Смежные вопросы

  • Нет связанных вопросов^_^