关于我的代码的问题,如何解决?

能帮忙看一下哪儿错了吗

#include <bits/stdc++.h>
using namespace std;
int main(){
    char txt[200],a,b;
    int i,ntxt=0;
    while((txt[ntxt++]=getchar())!='\n');
    a=getchar();
    getchar();
    b=getchar();
    for(i=0;i<ntxt;i++){
        if(txt[i]==a){
            cout<<b;
        }
        else{
            cout<<txt[i];
        }
    }
    cout<<endl;
    return 0;
}

你的while循环里没有语句啊,应该用大括号把语句括起来

你的代码想要实现什么?

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7724718
  • 你也可以参考下这篇文章:如何在不接收返回值的情况下获取返回值?
  • 您还可以看一下 张传波老师的软件设计是怎样炼成的?课程中的 架构设计的第一层拆解小节, 巩固相关知识点
  • 除此之外, 这篇博客: 猿创征文| 指针,这还拿不下你?中的 七、指向函数指针数组的指针 部分也许能够解决你的问题。
  • 以下回答由chatgpt基于相关博客总结生成:

    问题分析: 1. 头文件应使用#include <iostream>而不是#include <bits/stdc++.h>。 2. 应明确指定使用std命名空间,而不是使用using namespace std;。 3. 数组txt的大小应足够大,以容纳输入的文本内容,例如char txt[201]。 4. 在读取输入文本时,应该在输入的最后添加一个字符串结束标志,可以将while循环中的条件改为(txt[ntxt++]=getchar())!='\n' && ntxt < 200。 5. 在接收ab的输入时,应确保只接收一个字符,可以使用cin.get(a)cin.get(b)。 6. 在使用cout输出时,应将输出内容用双引号括起来,例如cout << txt[i];改为cout << txt[i] << "";。 7. 在输出完成后,应该换行,可以使用cout << endl;

    代码修改如下:

    #include <iostream>
    using namespace std;
    
    int main() {
        char txt[201], a, b;
        int i, ntxt = 0;
        while ((txt[ntxt++] = getchar()) != '\n' && ntxt < 200);
        cin.get(a);
        cin.ignore();
        cin.get(b);
        for (i = 0; i < ntxt; i++) {
            if (txt[i] == a) {
                cout << b;
            }
            else {
                cout << txt[i] << "";
            }
        }
        cout << endl;
        return 0;
    }
    

    这样修改后,代码中的错误应该可以解决。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^