qq_41517828
2018-08-24 02:22
采纳率: 25.9%
浏览 489

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;
}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • _肆 2018-08-24 02:41
    已采纳

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

    点赞 评论
  • blownewbee 2018-08-24 02:34

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

    点赞 评论
  • 老九学堂-酱爆茄子 2018-08-24 02:40

    语法错误:

    if (str[i] = c1)
    

    改为

    if (str[i] == c1)
    

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

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

    点赞 评论
  • 白色一大坨 2018-08-24 02:50

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

     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;
    }
    
    点赞 评论

相关推荐 更多相似问题