我的输入出了点儿问题能看一下吗

我的输入出了点儿问题能看一下吗

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

你的while循环里没有语句,要加大括号,把执行语句括起来
而且输入可以用string,更加方便

for(i=0;i<c;i++
在这里下个断点
看看x a b c都是什么值

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7730086
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:❤️sscanf,一个函数可以带你解析所有的数据帧❤️(建议收藏)-我愿意为称他为最强的解析函数
  • 除此之外, 这篇博客: 请输入我是猪不然我就关闭你的电脑中的 请输入我是猪不然我就关闭你的电脑 部分也许能够解决你的问题。
  • 以下回答由chatgpt基于相关博客总结生成:

    回答:

    该段代码的目的是将输入的字符串中出现的字符a替换为字符b,然后输出替换后的字符串。

    问题出现在以下几点: 1. 使用了#include <bits/stdc++.h>,这是一个非标准的头文件,不建议使用。可以使用#include <iostream>代替。 2. 使用了using namespace std;语句。虽然这样可以省略标准命名空间的使用,但会导致命名冲突。建议直接使用std::作为标准命名空间的前缀。 3. char x[30]定义了固定长度的字符数组,可能会导致数组越界。建议使用std::string来代替。 4. 使用了getchar()来读取字符,这样会跳过空格和回车等字符,导致输入不准确。建议使用std::cin来读取输入。 5. c=0被赋值为字符0而不是整数0,这样可能导致程序行为不确定。建议将其改为c=0。 6. 在循环中,getchar()在循环条件中被调用,导致每次循环都会进行一次输入操作,并将输入的字符存入数组中。但是这样的循环会导致存入数组的字符个数多一个,因为循环结束的条件是遇到换行符。建议将while((x[c++]=getchar())!='\n');的分号改为花括号,并在循环结束后c--。 7. ab的类型为char,但是应该用std::string来存储替换字符,以支持多位字符的替换。 8. 在for循环中,使用了cout来输出字符,但是需要使用std::cout。 9. 没有在代码末尾增加换行符,导致输出结果不易读。

    下面是修改后的代码:

    #include <iostream>
    #include <string>
    
    int main(){
        std::string x, a, b;
        std::getline(std::cin, x);
        std::cin >> a >> b;
        for(int i = 0; i < x.length(); i++){
            if(x[i] == a[0]){
                std::cout << b;
            }
            else{
                std::cout << x[i];
            }
        }
        std::cout << std::endl;
        return 0;
    }
    

    这样修改后的代码修复了问题,将输入的字符a替换为字符b,并输出替换后的字符串。


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