Как удалить первые три буквы строки с помощью C?Как удалить первые три символа из строки с помощью C?
ответ
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);
}
Альтернативный дизайн:
size_t chopN(char *str, size_t n)
{
assert(n != 0 && str != 0);
size_t len = strlen(str);
if (n > len)
n = len;
memmove(str, str+n, len - n + 1);
return(len - n);
}
+1, но не лучше ли это, как int, который печатает # символов на самом деле, оставшихся (или -1 вместо утверждения)? –
@ Тим: есть всевозможные варианты дизайна; это примерно минимальная реализация - в целом, я думаю, что назначение лучше, чем раннее возвращение. Что касается возвращаемого значения - мне будет хорошо с возвратом уменьшенной длины - это скорее будет 'size_t', чем вход. –
В C строка представляет собой массив символов в непрерывных местах. Мы не можем ни увеличить, ни уменьшить размер массива. Но создайте новый массив символов размером оригинального размера минус 3 и скопируйте символы в новый массив.
Ну, узнать о струнной копии (http://en.wikipedia.org/wiki/Strcpy), индексирование в строку (http://pw1.netcom.com/~tjensen/ptr/pointers.htm) и повторите попытку. В псевдокоде:
find the pointer into the string where you want to start copying from
copy from that point to end of string into a new string.
-1. Код без объяснения лучше, чем ссылки на ссылки и совершенно очевидные «псевдокоды». – pelesl
Например, если у вас есть
char a[] = "123456";
самый простой способ удалить первые 3 символа будут:
char *b = a + 3; // the same as to write `char *b = &a[3]`
б будет содержать «456»
Но в общем случае вы также должны убедиться, что длина строки не превышала
Не только 'sizeof (char)' ** бесполезно **, это также ** неправильно ** для других типов. Арифметика указателя происходит в единицах элементов, а не в байтах. –
Да, вы правы. Изменили ответ –
«плз отправить Teh codez !! 1» - «Нет.» – delnan
'str = str + 3;' поскольку 'str + = 3;' слишком коротко для комментария! –