在任何C lib中都有类似的功能吗?

时间:2014-01-07 13:06:47

标签: c arrays function slide

我一直在跟踪这个地方一段时间,但这是我的第一篇文章所以请放纵。 我已经为学校项目编写了这个函数,但不知道如何命名它(我们必须自己创建函数)。问题是,有没有人知道图书馆中是否有类似的功能,我知道如何命名它?

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"

2 个答案:

答案 0 :(得分:2)

如果memcpymemmove区域重叠,您可以使用from(或to

然后memset

没有一个功能同时兼顾

答案 1 :(得分:1)

如果你想将它传递给一个不负责清理内存的函数,你可以只提供该函数str+len

printFunc(str+len);

但是如果您需要在没有第一个len chars的情况下传递此字符串,那么您可以memcpy将字符串放到新字符串上并释放最后一个字符串。