c - 如何在C中用多个字符替换字符串char指针中的字符?

标签 c arrays string pointers

我在进行 C 编程一段时间后,遇到了一个问题。我需要在指针中附加字符,如下所示。

#include<stdio.h>
#define l "a"
#define lt "<aa>"
#include<string.h>

main()
{
    char *st = (char*)malloc(sizeof(char));
    //char st[10];
    char *t = "abcdab";
    char *m ="y";

    while(*t)
    {
        if(*t == *l)
        {
            strcat(st, lt);
        }   

        else
        {
            //strcat(st, m); //strcat works in this case, But i need replacement.
            *st++ = *m; // How to make this line work to get desired output?
        }
        t++;
    }   
    printf("%s\n", st);
}   

正如所见,代码通过 strcat 运行。但我不想在 else block 中使用 strcat 。 yyyy。是我想要的输出,它与 else block 中的 strcat 一起使用。但如果我使用“*st++ = *m”,它只打印“”。那么我需要添加什么才能使其打印出预期的输出?

最佳答案

@Michi "<aa>yyy<aa>y" should be the output.

你可以尝试这样的事情:

#include<stdio.h>
#include<stdlib.h>

char *foo(const char *src, const char ch){
    char *dest = malloc(25 * sizeof(char*));
    int i=0,j=0;

    while(src[i] != '\0'){
        if(src[i] == ch){
            dest[j] = '<';
            j++;
            dest[j] = ch;
            j++;
            dest[j] = '>';
            j++;
        }
        if(src[i] != ch){
            dest[j] = 'y';
            j++;
        }
        i++;
    }
    dest[j] = '\0';
    return dest;
}

int main(void){
    char *t = "abcdab";
    char l = 'a';

    char *arr = foo(t,l);

    printf("%s\n",arr);
    free(arr);
    return 0;
}

输出:

<a>yyy<a>y

当然,你可以不用 malloc 来做到这一点也是:

#include<stdio.h>

void foo(const char *src, const char ch){
    char dest[100];
    int i=0,j=0;

    while(src[i] != '\0'){
        if(src[i] == ch){
            dest[j] = '<';
            j++;
            dest[j] = ch;
            j++;
            dest[j] = '>';
            j++;
        }
        if(src[i] != ch){
            dest[j] = 'y';
            j++;
        }
        i++;
    }
    dest[j] = '\0';
    printf("%s\n",dest);
}

int main(void){
    char *t = "abcdab";
    char l = 'a';

    foo(t,l);
    return 0;
}

关于c - 如何在C中用多个字符替换字符串char指针中的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33853816/

相关文章:

c - 预递增的字符指针在递增后都指向相同的地址?

python - 换屏事件

c# - 为什么 string.Join ("", new object[] { null, "a", null, "b"}) 返回 string.Empty?

java - 无法对基本类型 boolean 调用 equals(boolean)

c - 如何在不知道矩阵大小且无需多次读取的情况下从文件加载矩阵?

Linux 上的 C-RPC(冒泡排序)

Java Parser Json 作为多维数组

数组上的 C++ 线性搜索算法

python - 插入取自 for 循环的值

python - 如何使用 __str__ 方法打印列表?