如何用C删除字符串中的前三个字符?

15 c string

如何用C删除字符串的前三个字母?

Bla*_*ear 22

将3添加到指针:

char *foo = "abcdef";
foo += 3;
printf("%s", foo);
Run Code Online (Sandbox Code Playgroud)

将打印"def"

  • 首先需要检查以确保它至少有三个字符长! (5认同)

Jon*_*ler 13

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);
}
Run Code Online (Sandbox Code Playgroud)

另一种设计:

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);
}
Run Code Online (Sandbox Code Playgroud)


Mar*_*aev 8

例如,如果你有

char a[] = "123456";
Run Code Online (Sandbox Code Playgroud)

删除前3个字符的最简单方法是:

char *b = a + 3;  // the same as to write `char *b = &a[3]`
Run Code Online (Sandbox Code Playgroud)

b将包含"456"

但在一般情况下,您还应确保不超过字符串长度