簡體   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