我需要用一个字符替换几个字符(取决于它们的计数是偶数还是奇数)。如果是偶数,我应该用 P 替换 +,如果是奇数,则用 p 替换。
输入:kjlz++zux+++
while(p[i])
{
j=i;
k=i;
length=strlen(p);
if(p[i]=='*')
{
position=i;
}
printf("Position is: %d", position);
while(p[j]=='*')
{
counter++;
j++;
}
}
输出:kjlzPzuxp
我不知道如何删除几个字符,我知道如何输入一个。
最佳答案
基本上,您可以保持 text 变量不变,直到找到 +。在这种情况下,您开始计算有多少个连续的加号。一旦知道了这一点,就可以决定是否应该添加字母 P 或 p。保留一个单独的索引来写回您的文本变量!否则,在找到 2 或 3 个加号后,它将开始写入错误的索引,尝试找出原因;)。
#include <stdio.h>
#include <stdlib.h>
int main (void)
{
char text[] = "kjlz++zux+++";
int len = sizeof(text) / sizeof(text[0]);
int index = 0, count = 0;
for(int i = 0; i < len; i++)
{
if(text[i] == '+')
{
count = 0;
while(text[i] == '+') i++, count++;
i--;
text[index++] = count % 2 ? 'p' : 'P';
}
else
{
text[index++] = text[i];
}
}
text[index] = 0;
printf(text);
}
您可以使用malloc为text变量分配空间,以便之后可以使用realloc将数组缩小到输出文本。这样可以节省一些内存,当您开始处理更大的数据 block 时,这一点尤其重要。
关于c - C语言中用一个字符替换字符串中的多个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59312472/