问题描述
我尝试过这种方法,但输出与输入相同。用户输入他想要替换的字符以及他想要替换的字母。我不明白我哪里出错了。
#include<stdio.h>
char* replaceChar(char *s,char x,char y)
{
int i=0;
while(s[i])
{
if(s[i]==x)
{
s[i]==y;
}
i++;
}
return s;
}
int main()
{
char string[30];
printf("Enter the string:\n");
gets(string);
fflush(stdin);
char x;
char y;
printf("Enter the character you want to replace:\n");
scanf("%c",&x);
printf("Enter the character you want to replace with:\n");
scanf(" ");
scanf("%c",&y);
printf("After replacing the string :\n");
printf("%s",replaceChar(&string[0],x,y));
return 0;
}
解决方法
问题是您在此代码片段中使用的是比较运算符而不是赋值运算符
if(s[i]==x)
{
s[i] == y;
}
写
if(s[i]==x)
{
s[i] = y;
}
注意函数gets
是不安全的,C标准不再支持。而是使用函数 fgets
。
还有这个电话
fflush(stdin);
有未定义的行为。删除它。
并使用
scanf(" %c",&x);
^^^
scanf(" %c",&y);
^^^
代替
scanf("%c",&x);
scanf(" ");
scanf("%c",&y);