我有一个关于如何在char数组中添加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!='\0')
{
if(*p1++=='c')
if(*p1=='d')
{
p1--;
*p2++ = *p1++;
*p2++ = *p1++;
*p2 = 'A';
p2++;
c1++;
}
else
{
p1--;p1--;
*p2 = *p1;
p1++;p2++;
c2++;
}
}
*p2 = '\0';
p2-=(c2+c1);
p1-=c2;
while(*p2!='\0')
{
*p1 = *p2;
p1++;p2++;
}
*p1 = '\0';
}
int main(){
char s1[100];
gets(s1);
StrAdd_A_afterEach_CD(&s1[0]);
cout<<s1;
cout<<endl;
return 0;
}
我不想将函数更改为任何返回类型,例如char on * func。或者用功能来做,因为我正在学习基础知识,但请帮我修改代码,谢谢。
答案 0 :(得分:0)
希望代码在下面有所帮助。
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 = '\0';
// the following block is = strcpy(param, s);
{
p2 = s;
while (*p2)
{
*param++ = *p2++;
}
*param = '\0';
}
}