C - функция memmove () - Сколько байтов я перемещаю в этой реализации? - PullRequest
1 голос
/ 29 октября 2011

Кажется, это отличное место.Мой вопрос состоит в том, какое значение (или сколько байтов) я перемещаю в этой реализации memmove ()?

int main ()
{
char str[] = "memmove can be very useful......";
memmove (str+15,str+20,/*?*/);
puts (str);
return 0;
}

В следующем примере говорится, что я перемещаю 11 байтов.Но что делает его 11 байтов?Может кто-нибудь объяснить?

int main ()
{
char str[] = "memmove can be very useful......";
memmove (str+20,str+15,11); //source and destination are reversed
puts (str);
return 0;
}

Спасибо!

Редактировать: Кстати, длина строки 33, включая завершающий нулевой символ.

Ответы [ 3 ]

1 голос
/ 29 октября 2011

Третий параметр memmove указывает количество байтов для перемещения, поэтому во втором примере вы перемещаете 11 байтов.Ваш первый пример не должен компилироваться, потому что у вас будет синтаксическая ошибка в строке, которая вызывает memmove.

0 голосов
/ 29 октября 2011

Третий параметр определяет, сколько байтов копировать;В первом примере вы должны определить, сколько байтов нужно скопировать.

0 голосов
/ 29 октября 2011

Последний аргумент memmove () - количество байтов для перемещения - в данном случае 11

...