我在使用char的if函数时遇到了一些麻烦

时间:2019-10-10 18:42:37

标签: c++

在这里,当我输入CO2时,它正在处理'else'语句,如果我输入其他任何内容,它仍然相同

我尝试将'co2'更改为“ co2”,但是那甚至不起作用

int main(int nNumberofArgs, char* pszArgs)
{
    char symb[5];

    cout << "Enter Symbol: ";
    cin >> symb[5];

    if (symb[5] == 'co2')
    {
        cout << "This is Carbon-Dioxide" << endl;
    }
    else
    {
        cout << "Error" << endl;
    }

    return 0;
}

1 个答案:

答案 0 :(得分:1)

您的代码写错了。

语句char symb[5];声明了一个固定大小的数组,最多可容纳5个char元素。但是,当您执行cin >> symb[5];时,您并没有将读取到 5 char到数组中,而是在读取单个 {{1} }插入阵列的 6th 插槽,破坏了周围的内存。

此外,char不是比较数组内容的正确方法。您正在将第六个(无效)symb[5] == 'co2'与单个多字节字符进行比较,而不是将数组的全部内容与多字符字符串进行比较。

请尝试以下类似操作:

char

话虽如此,使用#include <iostream> #include <cstring> using namespace std; int main() { char symb[5]; cout << "Enter Symbol: "; cin.get(symb, 5); if (strcmp(symb, "co2") == 0) { cout << "This is Carbon-Dioxide" << endl; } else { cout << "Error" << endl; } return 0; } 代替std::string更好:

char[]