c 中是否有任何函数或方法可以对 char 数组的某些部分进行交换/编辑。
一些伪代码:
char A[] = {"/text/X/text/Y","/text/G/text/H"};
int VAL[] = {0,1,2,3};
swap/edit -> set X to VAL[0],set Y to VAL[1],set g to VAL[2],set H to VAL[3]
最佳答案
您必须指定您要在大海捞针 (A
) 中寻找什么(针
)。
strstr()
查找指向针的指针(如果它存在于大海捞针中)。由于您的替换值是 int
,而不是 char
或 char[]
(或指向这些类型的指针),因此您需要使用 sprintf
/snprintf
将格式化字符串保存到变量中。
#include <stdio.h>
#include <string.h>
int main(int argc, char* argv[]) {
char A[] = {"/text/X/text/Y/text/G/text/H"};
int VAL[] = {0,1,2,3};
char needle[][2] = {
{"X"},
{"Y"},
{"g"},
{"H"}
};
printf("Original A: %s\r\n", A);
//swap/edit -> set X to VAL[0],set Y to VAL[1],set g to VAL[2],set H to VAL[3]
for(int i=0; i<(sizeof(VAL)/sizeof(int)); i++) {
char *p = NULL;
p = strstr(A, needle[i]);
if(p) snprintf(p, 1, "%1i", VAL[i]);
}
printf("Edited A: %s\r\n", A);
return 0;
}
输出:
Original A: /text/X/text/Y/text/G/text/H
Edited A: /text/0/text/1/text/G/text/3
关于c - 如何编辑字符数组的某些部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59379736/