c++ - 请需要帮助 C++,使用 bool 等

标签 c++

我的任务是:编写一个程序,从键盘上一个一个地读取字符,直到字符“q”出现 进入。使用带有 bool 变量的循环来退出循环。最后一个字符串包含 所有输入的字母都应打印在屏幕上(“q”除外)。

这是我目前所拥有的,我现在有点卡住了,每次我运行它时我只能输入 1 个字符然后程序停止---> 这发生在我用 if(b= =真)...... .

int main()
{
bool b;
char input[80];
int i;

b = false;
while(b != true){
    cout<<"Enter characters: "<<endl;
    cin>>input[i];
    if(input[i] == 'q'){
        b == true;
        break;
    }
}

if(b == true){
    for(int j = 0; j < 1; j++){
        for(int x = 0; x < 1; x++){
            cout<<input[i]<<endl;
        }
    }
}

请帮忙。非常感谢。

最佳答案

六个错误。

  1. 您忘记将 i 初始化为零。

  2. 您忘记在每次循环时递增 i

  3. 运算符 == 与运算符 = 不同。

  4. 如果您的输入超过输入的大小,就会发生不好的事情 大批。因此,需要进行一些检查以确保 i 不超过 80(输入数组的声明长度。

  5. 您正在将 q 插入到 input 数组中,但您不想打印它。

  6. 在循环的每次迭代中提示输入更多字符。不确定你是不是这个意思。

对循环的一些修改:

i = 0;
b = false;
cout<<"Enter characters: "<<endl;
while (i < 80)  // limit to 80 chars
{
    char ch;
    cin >> ch;
    if(ch == 'q')
    {
        b = true;   // assign with =, not compare with ==
        break;
    }
    input[i] = ch; // insert into array after the check for q
    i++;  // increment i
}

最后,你的打印循环是没有希望的。让我们安全地用 null 终止您的字符串并打印它。

if(b)
{
    if (i >= 80)
    {
        i=79;
    }
    input[i] = '\0';
    cout << input << endl;
}

如果您对 C++ 中的字符串类足够熟悉,则可以轻松地转换您的代码以使用它。这样您就不必处理 80 的数组限制。

关于c++ - 请需要帮助 C++,使用 bool 等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33426942/

相关文章:

c++ - GStreamer + OpenCV视频处理问题

c++ - V8 C++ 嵌入问题

c++ - read_some/write_some 和接收/发送之间的区别?

c++ - 从多个线程调用 WSAStartup() 会导致死锁吗?

c++ - <mutex> 和 <condition_variable> 的异常处理

c++ - 以编程方式在 Windows 7 上启动 sfx 存档(使用 _execv)? (C++)

c++ - 代码生成 wreorder 警告

c++ - FFmpeg + OpenAL - 无法播放视频中的流式声音

c++ - 为什么 UIKit 或 Cocoa 必须用 Objective-C 编码?

c++ - 生成可以区分 ID(Foo::a()) 和 ID(Foo::b()) 的唯一标识符