向字符数组中添加2个字符

Add 2 Characters to char array

本文关键字:字符 2个 添加 数组      更新时间:2023-10-16

我有一个关于如何在字符数组内添加2个字符的问题,我不知道问题在哪里,但我想在每个'c'和'd'之后添加任何字符,如' a ',但它不能正常工作,我的意思是如果输入是"abcde"它显示这样的输出"abcdeA",如果输入"abcdecde",它显示"abcdecdedA",但我想要这样的"abcdAecdAe",可以帮助我,这是我的代码。

void StrAdd_A_afterEach_CD(char *p1){
    char s[100];
    char *p2 = &s[0];
    int c1=0,c2=0;
    while(*p1!='')
    {
        if(*p1++=='c')
            if(*p1=='d')
            {
                p1--;
                *p2++ = *p1++;
                *p2++ = *p1++;
                *p2 = 'A';
                p2++;
                c1++;
            }   
        else 
        {
            p1--;p1--;
            *p2 = *p1;
            p1++;p2++;
            c2++;
        }
    }
    *p2 = '';
    p2-=(c2+c1);
    p1-=c2;
    while(*p2!='')
    {
        *p1 = *p2;
        p1++;p2++;
    }
    *p1 = '';
}
int main(){
    char s1[100];
    gets(s1);
    StrAdd_A_afterEach_CD(&s1[0]);
    cout<<s1;
    cout<<endl;
    return 0;
}

我不想将函数更改为任何返回类型,如char on *func。或者用函数来做,因为我正在学习基础知识,但是请帮助我纠正那个代码,谢谢。

  1. 至少你做错了一个问题是,你正在改变参数p1的地址,你不存储初始地址,这就是为什么你附加a。
  2. 您没有将所有字符添加到s字符串

希望下面的代码有帮助。

void StrAdd_A_afterEach_CD(char *param)
{
    char* p1 = param;
    char s[100] = {0};
    char *p2 = s;
    while( *p1 )
    {
        bool processed = false;
        if(*p1 == 'c')
        {
            if(*(p1+1)=='d')
            {
                processed = true;
                *p2++ = *p1++;
                *p2++ = *p1++;
                *p2++ = 'A';
            }
        }
        if( ! processed )
        {
            *p2++ = *p1++;
        }
    }
    *p2 = '';
    // the following block is = strcpy(param, s);
    {
        p2 = s;
        while (*p2)
        {
            *param++ = *p2++;
        }
        *param = '';
    }
}