如何用C删除字符串的前三个字母?
答案 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.