我一直在跟踪这个地方一段时间,但这是我的第一篇文章所以请放纵。 我已经为学校项目编写了这个函数,但不知道如何命名它(我们必须自己创建函数)。问题是,有没有人知道图书馆中是否有类似的功能,我知道如何命名它?
void function(char *str, int slen)
{
while(*str) {
if (slen) {
*str = *(str + slen);
} else {
*str = '\0';
}
if (*(str + slen) == '\0') {
slen = 0;
}
str++;
}
}
它的作用:
将SLEN
个字符的字符串向开头方向滑动,最后填充'\0'
。
示例:
char *str = strdup("I want to remove 8 characters");
function(str, 8);
将我的字符串转换为"remove 8 characters.\0\0\0\0\0\0\0\0\0"
答案 0 :(得分:2)
如果memcpy
和memmove
区域重叠,您可以使用from
(或to
然后memset
没有一个功能同时兼顾
答案 1 :(得分:1)
如果你想将它传递给一个不负责清理内存的函数,你可以只提供该函数str+len
:
printFunc(str+len);
但是如果您需要在没有第一个len
chars
的情况下传递此字符串,那么您可以memcpy
将字符串放到新字符串上并释放最后一个字符串。