向字符数组中添加2个字符
Add 2 Characters to char array
我有一个关于如何在字符数组内添加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。或者用函数来做,因为我正在学习基础知识,但是请帮助我纠正那个代码,谢谢。
- 至少你做错了一个问题是,你正在改变参数p1的地址,你不存储初始地址,这就是为什么你附加a。
- 您没有将所有字符添加到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 = ' ';
}
}
相关文章:
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- 将stl字符串缩小到小于15个字符的容量
- 带有多个字符分隔符的正则表达式
- 查找字符在两个索引之间出现的次数
- 我想在C++中读取一些多个字符,但它永远不会读取第二个字符
- 如何读取单个字符并在输入两个字符序列时输出? 使用 while 循环和C++
- 如何删除字符串中的前 2 个字符(如果它有"-")
- 我已经建立了递归关系,它找到了两个字符串之间最长的连续公共字符串,我怎么能跳过其中一个字符串中的一个字符
- 注册表正在设置 1 个字符
- 使用类 ?C++ 和 SFML 以及标题中的 15 个字符
- 如何忽略第一个字符输入后的所有内容
- 将(N 个字节)无符号字符指针转换为浮点数和双 C++
- std::stoi 只转换前几个字符
- 仅读取文件末尾的最后 3 个字符,并将其另存为 int
- C++完全复制要字符串的字符列表,而不会忽略多个空格
- C++字符数组不接受超过 4 个字符的输入
- 在大小为 10 的 char 数组中输入超过 10 个字符的字符串并输出时,它会显示整个数组而不是前 10 个数组.为什
- 增量生成 - 错误:字符串的第一个字符应'0'或'1'
- 在 c++ 的 10x10 数组中生成特定数量的多个随机字符
- 函数返回两个字符串的第一个常用字符