c - 如何在C中的字符串中插入一个额外的字符

标签 c string character add

#include <stdio.h>
#include <string.h>

void replace(char a[],char b[]);

int main(void)
{
    char string1[100]; char string2[100];
    printf("Please enter a string:");
    fgets(string1, sizeof(string1), stdin);

    replace(string1, string2);
}

void replace(char a[],char b[])
{
    int i;
    strcpy(b,a);

    for(i=0;i<strlen(a);i++)
    {
        if(a[i]=='a')
        {
            b[i+1]=a[i];
        }
    }

    printf("%s\n",b);
}

这个程序的功能是复制string1进入string2但如果有'a' string1 中的字符, 它需要在 string2 中翻倍.

例如,如果 string1是“飞机”,string2需要是“aaeroplaane”。

但是,上面的代码似乎更改了 'a' 之后的下一个字符在string1而不是简单地添加它。例如,如果我输入“aloha”,它只会给我“aaoha”而不是“aalohaa”。我试过在线搜索但无济于事。我已经在这个问题上坚持了几个小时。

最佳答案

为了工作,你必须正确地实现你的replace函数

应该是这样的:

void replace(char a[],char b[])
{
    int idxA = 0, idxB = 0;

    for(idxA;idxA<strlen(a);idxA++, idxB++)
   {
        b[idxB] = a[idxA];
        if(a[idxA]=='a')
        {
            idxB++;
            b[idxB]=a[idxA];
        }
    }

    b[idxB] = '\0';
    printf("%s\n",b);
}

但是您必须确保b 有足够的空间来容纳完整的字符串。例如,您可以保留 a 大小的两倍,最坏情况是数组 a 包含所有 a 字符

关于c - 如何在C中的字符串中插入一个额外的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47157257/

相关文章:

c - 从用户空间访问内核内存(task_struct)

c - C 中的结构限制

c++ - 如何在 C++ 中将字符串拆分为字符数组?

c - C中输出单个字符

c# - 与正则表达式的部分匹配

c - strtok 删除除第一个标记之外的字符串

c - 重构遗留 C 代码——使用外部声明来帮助拆分模块(潜在的链接和运行时问题)

android - 检查 JSON 中是否存在子对象

javascript - 字符串比较似乎不起作用

c# - 如何从字符串中删除字符,列表中的字符除外