【发布时间】:2016-11-10 23:27:13
【问题描述】:
我需要在没有任何库的情况下从 array 中删除前 3 个字符。我该怎么做呢?我知道我可以使用memmove,但我正在使用没有标准库的系统,memmove 也用于指针。使用memmove 我可以做到this:
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);
}
但是我可以在没有memmove 或任何其他标准库函数的情况下从数组中删除字符吗?
【问题讨论】:
-
“删除”是否意味着您还想释放内存?如果不是(而且它只是关于输出),你只需让你的指针指向新的开始,即 str += 3
-
@Ur Mom 你可以使用strlen吗?
-
注意:在
assert(n != 0 && str != 0)中看到不需要n != 0。