我有以下代码可以正确地将子字符串插入到原始字符串的特定部分。如何使用query
代替"query": {
"bool": {
"filter": [
{ "term": { "color": "red" }},
{ "term": { "brand": "gucci" }}
]
}
}
来执行相同的操作?
query
strcat()
是原始字符串,memcpy()
是子字符串应该从哪个开始的元素,void insertString(char original[], int start, int length, char toInsert[]){
size_t insertlen = strlen(toInsert);
size_t origlen = strlen(original);
char *m = malloc(origlen - length + insertlen);
memcpy(m, &original[0], start);
memcpy(m+start, &toInsert[0], insertlen);
memcpy(m+start+insertlen, &original[start+length], origlen-length+insertlen);
strcpy(original,m);
}
是从char original[]
和int start
中删除的子字符串的长度{1}}是要插入的子字符串。
澄清的例子:
离。如果
int length
,
original[]
,
char toInsert[]
,
original[] = default string 1
start = 5
等于' defauhello worlding 1'因为在这个例子中被替换的子串是' lt str'从5个字符开始,长度为6个字符。如何使用length = 6
而不是toInsert[] = hello world
执行相同的操作?
答案 0 :(得分:0)
您可以使用strncat并以下面的方式执行此操作。但请注意,以下内容并不处理您在此问题中遇到的错误情况和其他限制。
void insertString(char original[], int start, int length, char toInsert[]){
size_t insertlen = strlen(toInsert);
size_t origlen = strlen(original);
size_t newBuffLen = origlen - length + insertlen + 1
char *m = malloc(newBuffLen);
memset(m, 0, newBuffLen);
strncat(m, original, start);
strncat(m, toInsert, insertlen);
strncat(m, original + start+ length, origlen-start-length);
strcpy(original,m);
}
答案 1 :(得分:0)
我已将其替换为以下内容并且完美无缺
void insertString(char original[], int start, int length, char toInsert[]){
size_t insertlen = strlen(toInsert);
size_t origlen = strlen(original);
char holder[origlen - length + insertlen];
strcpy(holder,"");
strncat(holder,original,start);
strcat(holder,toInsert);
strncat(holder, &original[start+length], origlen-length+insertlen);
strcpy(original,holder);
}
谢谢大家的帮助!