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
Третий параметр определяет, сколько байтов копировать; в первом примере вы должны определить, сколько байтов нужно скопировать.