How would I remove the first three le开发者_开发百科tters of a string with 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
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.
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.
精彩评论