Как удалить первые три символа из строки с C? - PullRequest
13 голосов
/ 21 января 2011

Как бы я удалил первые три буквы строки с помощью C?

Ответы [ 5 ]

19 голосов
/ 21 января 2011

Добавьте 3 к указателю:

char *foo = "abcdef";
foo += 3;
printf("%s", foo);

выведет "def"

13 голосов
/ 21 января 2011
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);
}
8 голосов
/ 21 января 2011

Например, если у вас есть

char a[] = "123456";

Самый простой способ удалить первые 3 символа будет:

char *b = a + 3;  // the same as to write `char *b = &a[3]`

b будет содержать "456"

Но в общем случае вы также должны убедиться, что длина строки не превышена

0 голосов
/ 21 января 2011

Что ж, узнайте о копировании строки (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.
0 голосов
/ 21 января 2011

В C строка - это массив символов в непрерывных позициях.Мы не можем ни увеличить, ни уменьшить размер массива.Но создайте новый массив символов размером с оригинальный размер минус 3 и скопируйте символы в новый массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...