简体   繁体   中英

How to remove first three characters from string with C?

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

Add 3 to the pointer:

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

will print "def"

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

An alternative design:

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

For example, if you have

char a[] = "123456";

the simplest way to remove the first 3 characters will be:

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

b will contain "456"

But in general case you should also make sure that string length not exceeded

In C, string is an array of characters in continuous locations. We can't either increase or decrease the size of the array. But make a new char array of size of original size minus 3 and copy characters into new array.

Well, learn about string copy ( http://en.wikipedia.org/wiki/Strcpy ), indexing into a string ( http://pw1.netcom.com/~tjensen/ptr/pointers.htm ) and try again. In pseudocode:

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM