下面是一个问题,我们需要用另一个新字符串替换字符串中所有字符的出现。 下面给出的是这样一个问题:无法用另一个字符串替换字符串中的字符
编写一个程序,替换给定字符的发生(比如C) 在主字符串(说PS)与另一个字符串(比如S)。
输入: 第一行包含在主串(PS) 下一行包含一个字符(C) 下一行包含一个字符串(或多个)
输出: 打印串PS与每一个发生c被s代替。
NOTE: - PS或s中没有空格。 - PS的最大长度为100 - S的最大长度为10
下面是我的代码:
#include<stdio.h>
int main()
{
char ps[100],*ptr,c,s[10];
printf("Enter any string:");
gets(ps);
printf("Enter the character you want to replace:");
scanf("%c",&c);
printf("Enter the new string:");
fflush(stdin);
scanf("%s",&s);
ptr=ps;
while(*ptr!='\0')
{
if(*ptr==c)
*ptr=s;
ptr++;
}
printf("Final string is:");
puts(ps);
return 0;
}
我不能用字符串替换字符。它只是给我一个垃圾输出而不是我想要替换的角色。
但是,当我将它声明为字符时,输出与预期的一样。它用另一个角色代替角色。
你能帮我解决吗?
'fflush(stdin)'和'gets()'...都是坏的。 –
你看到的'垃圾'可能是一个内存地址... –
我建议将结果字符串写入一个新的'char'数组。 'c'中的数组不会自动调整大小。即使你正确地用字符串's'替换字符'c',如果's'多于一个字符长度,它将覆盖'ps'中的字符,这不是你想要的。你当然可以在阵列中移动角色来为新阵列腾出空间,但这会比编写一个新阵列更困难的编码方式。 – yano