Мне нужно удалить первые 3 символа из массива без каких-либо библиотек. Как мне это сделать? Я знаю, что могу использовать memmove
, но я работаю над системой без стандартной библиотеки, также memmove
предназначен для указателей. С memmove
я могу сделать this:Удалить первые несколько символов из строки
void chopN(char *str, size_t n)
{
assert(n != 0 && str != 0);
size_t len = strlen(str);
if (n > len)
return; // Or: n = len;
memmove(str, str+n, len - n + 1);
}
Но я мог удалить символы из массива без memmove
или любых других стандартных функций библиотеки?
«удалить» означает, что вы также хотите освободить память? если нет (и это только выход), вы просто указали бы свой указатель на новый старт, т. е. str + = 3 –
@Ur Mom Можно ли использовать strlen? –
Примечание: см. «N! = 0» в 'assert (n! = 0 && str! = 0)'. – chux