#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/