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

Кажется, это отличное место. У меня вопрос, какое значение (или сколько байтов) я перемещаю в этой реализации 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 ответа

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

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

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

Другие вопросы по тегам