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


梵蒂冈之花
浏览 684回答 2
2回答

红糖糍粑

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

芜湖不芜

来,给你改了一下,运行试试:&nbsp;int&nbsp;replace(char*str,&nbsp;char&nbsp;c1,&nbsp;char&nbsp;c2)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;count&nbsp;=&nbsp;0; &nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i&nbsp;=&nbsp;0; &nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(str[i]&nbsp;!=&nbsp;'\0')&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(str[i]&nbsp;==&nbsp;c1){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str[i]&nbsp;=&nbsp;c2; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count++; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i++; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;count; } int&nbsp;main() { &nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;A[5]&nbsp;=&nbsp;"abcd"; &nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;<<&nbsp;"count:"&nbsp;<<&nbsp;replace(A,&nbsp;'a',&nbsp;'f')&nbsp;<<&nbsp;endl&nbsp;<<&nbsp;"A:"&nbsp;<<&nbsp;A; &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0; }
打开App,查看更多内容
随时随地看视频慕课网APP