簡體   English   中英

如何用 int 替換 substring

[英]How to replace substring with int

所以我見過很多像 str_replace(str, substr, newstring) 這樣的函數,但它們都不能處理數字,所以我想知道是否有人有一個可以同時處理字符和整數的函數,或者只是我一直在到處尋找並且無法弄清楚如何編寫自己的想法。 我的目標正是能夠用字符串中的 int 值替換字符串,而不僅僅是用字符串替換字符串

下面是我用來替換字符串的 function,它工作得很好

void strrpc(char *target, const char *needle, const char *replacement)
{
    char buffer[1024] = { 0 };
    char *insert_point = &buffer[0];
    const char *tmp = target;
    size_t needle_len = strlen(needle);
    size_t repl_len = strlen(replacement);

    while (1) {
        const char *p = strstr(tmp, needle);

        // walked past last occurrence of needle; copy remaining part
        if (p == NULL) {
            strcpy(insert_point, tmp);
            break;
        }

        // copy part before needle
        memcpy(insert_point, tmp, p - tmp);
        insert_point += p - tmp;

        // copy replacement string
        memcpy(insert_point, replacement, repl_len);
        insert_point += repl_len;

        // adjust pointers, move on
        tmp = p + needle_len;
    }

    // write altered string back to target
    strcpy(target, buffer);
}

您可以通過將 integer “打印”到字符串來將其轉換為字符串:

int id = get_id();
char idstr[20];

sprintf(idstr, "%d", id);

現在你可以

char msg[1024] = "Processing item {id} ...";

strrpc(msg, "{id}", idstr);
puts(msg);

但請注意,您找到的strrpc的實現只有在替換后的字符串短於 1023 個字符時才有效。 還要注意上面的例子可以更容易地寫成:

printf("Processing item %d ...\n", get_id());

沒有緩沖區溢出的危險。 我不知道你到底想達到什么,但也許字符串替換不是最好的解決方案。 (只是在說'。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM