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

时间:2011-01-21 17:20:12

标签: c string

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

5 个答案:

答案 0 :(得分:19)

向指针添加3:

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

将打印“def”

答案 1 :(得分: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);
}

替代设计:

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);
}

答案 2 :(得分:8)

例如,如果你有

char a[] = "123456";

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

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

b将包含“456”

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

答案 3 :(得分:0)

在C中,string是连续位置中的字符数组。我们不能增加或减少数组的大小。但是创建一个原始大小减去3的新char数组,并将字符复制到新数组中。

答案 4 :(得分:0)

好吧,了解字符串副本(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.