C ++如果语句运行时检查失败#2

时间:2017-07-25 02:45:48

标签: c++ if-statement char cin

我在这里有一个代码:(忽略friends_name,这很好)

char friend_sex [1];

cout << "Please enter m if your friend is male or f if your friend is female\n";

cin >> friend_sex; 
    if (friend_sex == "m") cout << "If you see " << friends_name << "! please ask him to call me\n";

    if (friend_sex == "f") cout << "If you see " << friends_name << "! please ask her to call me\n";

当我运行时,它说

  

运行时检查失败#2 - 堆叠变量&#39; friend_sex&#39;已经腐败了。

2 个答案:

答案 0 :(得分:1)

两种解决方案:

  1. char friend_sex[1]更改为char friend_sex,将"m"更改为'm',将"f"更改为'f'
  2. char friend_sex[1]更改为char friend_sex[2]。并将==判断更改为strcmp

答案 1 :(得分:1)

如果我说你使用Visual Studio(由于错误信息),我认为我是正确的。

发生的事情被称为“缓冲区溢出”,它包括写入内存中缓冲区位置后的位置

为避免这种情况,您可以将friend_sex的数据类型更改为std::string,这样可以解决您的问题