用C替换字符串中的字符

问题描述

我尝试过这种方法,但输出与输入相同。用户输入他想要替换的字符以及他想要替换的字母。我不明白我哪里出错了。

#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);