C++编程问题请大神赐教谢谢

下面代码为什么会提示冲突

int replace(char*str, char c1, char c2) {
int count = 0;
int i = 0;
while (*str != '\0') {
if (str[i] = c1){
str[i] = c2;
count++;
}
i++;
}
return count;
}

int main()
{
char A[5] = "abcd";
cout << "count:" << replace(A, 'a', 'f') << endl << "A" << A;
return 0;
}

1、星str表示char数组的第一个元素,所以永远不可能=\0,while死循环,i一直自增,str[i]越界
2、str[i] = c1;是赋值,str[i] = =c1才是判断

if (str[i] = c1)
->
if (str[i] == c1)

语法错误:

if (str[i] = c1)

改为

if (str[i] == c1)

“=”是赋值运算符 “==”才是比较运算符

注意:变量i没有实际意义,建议去掉

来,给你改了一下,运行试试:

 int replace(char*str, char c1, char c2) {
    int count = 0;
    int i = 0;
    while (str[i] != '\0') {
        if (str[i] == c1){
            str[i] = c2;
            count++;
        }
        i++;
    }
    return count;
}

int main()
{
    char A[5] = "abcd";
    cout << "count:" << replace(A, 'a', 'f') << endl << "A:" << A;
    return 0;
}