繁体   English   中英

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

[英]is there already a function similar to this in any C lib?

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

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"

您可以使用memcpy (如果fromto区域重叠,则使用memmove

然后memset

没有一个功能兼顾两者

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

printFunc(str+len);

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM