【问题标题】:Why is my char array condition not working [duplicate]为什么我的 char 数组条件不起作用 [重复]
【发布时间】:2020-01-13 18:15:53
【问题描述】:

我正在为我的 cis 简介做作业。条件之一是如果 name 变量与 EOFNAME 变量匹配,程序将退出。我做了一个 char 数组,这样我就可以存储一个名字,如果你不输入你的名字,而是退出它会退出。我制作了程序并编译它运行没有问题,除非你输入 Quit 它不只是继续并使用它作为名称变量

char name[10];
char EOFNAME[10] = "Quit";

void housekeeping()
{
    do{ cout << "Enter first name or " << EOFNAME << " to quit this session" << endl;
    cin >> name;
    cin.get();
    if ( name != EOFNAME)
    {
        mainloop();
    }
    else if(name == EOFNAME)
    {
       break;
    }

   }while(name != EOFNAME);
}

【问题讨论】:

  • 这个name == EOFNAME 不会达到你的预期。
  • 很遗憾你不能像这样比较数组。编译器认为您正在尝试比较它们的地址,而不是它们的内容。我可以推荐使用std:: string 而不是数组吗?如果不允许使用std::array,则需要使用strcmp 或使用自己制作的循环进行逐字符比较。

标签: c++ arrays while-loop char conditional-statements


【解决方案1】:

它不起作用,因为要比较 char 数组,您需要 strcmp 函数,例如strcmp(name, EOFNAME)!=0。您的 name!=EOFNAME 只是将指针与数组的开头进行比较,并且指针永远不会相等。

但在更惯用的 C++ 中,您可以声明变量 std::string 而不是 char [10]。然后你可以使用name!=EOFNAME 条件。

【讨论】:

    猜你喜欢
    • 2018-07-21
    • 2021-12-19
    • 2015-02-28
    • 2011-12-20
    • 2012-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多