[英]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.