c - 如何编辑字符数组的某些部分

标签 c arrays

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,而不是 charchar[] (或指向这些类型的指针),因此您需要使用 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/

相关文章:

c - C 中的指针数组排序有意外的输出

c - 有没有一种方法可以快速确定从(稀疏)文件中读取的 block 是否全为零?

c - fgets 中的段错误,试图在 c 程序中运行 shell 命令

php - 我可以将数组绑定(bind)到 PDO 查询中的 IN() 条件吗?

javascript - 用javascript中另一个对象的值创建新对象

c++ - 函数返回数组但主要显示垃圾

c - Discovery board STM32L0 (LoRaWAN) -> 如何正确配置停止模式?

c - strncpy 添加字符

javascript - 将背景颜色分配给数组中的类

c - 在确定字符数的同时打印数组