运行时检查失败#2 - 围绕变量' numberchoices'被腐败了

时间:2018-03-28 03:10:30

标签: c++ c++11 visual-c++ c++14

每次完成调试程序时,我都会遇到此终端错误。

我在做什么:

[此程序是用户输入数字与非重复随机抽奖号码之间的简单彩票号码比较。例如使用如果它有4个权利6]

但事实证明该计划不起作用或至少稳定。

这是我的代码:

#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
#include <time.h>
#include <ctime>
#include <algorithm>
using namespace std;

int main()

{
cout << "[La Loteria Electronica]\n";
cout << "Escoge 6 n" << char(163) << "meros del (1 al 49): \n";
int numberchoices[] = { 0 };

for (int w = 1; w < 7; w++)
{
    cout << "N" << char(163) << "mero #" << w << ": ";
    cin >> numberchoices[w];
} // user numbers



    //lottery numbers
    int i, j, k, nums[51];
    srand((int)time(0));
    for (i = 1; i < 50; i++) nums[i] = i;
    for (i = 1; i < 50; i++)
    {
        j = (rand() % 49) + 1;
        k = nums[i]; nums[i] = nums[j]; nums[j] = k;
    }
    cout << "The lottery numbers are:  ";
    for (i = 1; i < 7; i++) cout << nums[i] << " ";

    if (numberchoices[i] = nums[i])
    {
        cout << "gud\n";
    }

    if (numberchoices == nums)
    {
        cout << "gud 2";
    }
  /**/




cout << "\n\n";
system("pause");

1 个答案:

答案 0 :(得分:1)

请?

int numberchoices[] = { 0 };

for (int w = 1; w < 7; w++)
{
    cout << "N" << char(163) << "mero #" << w << ": ";
    cin >> numberchoices[w];
} // user numbers

你是在声明一个大小为1的数组,然后你将它用到位置6?

  

每次完成调试程序时,我都会遇到此终端错误。

我很惊讶你每次开始调试都没有终端错误。

{1}在1到6位置的访问权限是UB(未定义行为)。那就是:一切都可以发生。

解决方案:尝试

numberchoises

另一点

int numberchoices[7] = { }; // initialize all elements to zero!

不确定你得到了什么。

是否要将对应if (numberchoices == nums) numberchoices,建议int[1])的整数指针与int[7]对应的整数指针(a nums)进行比较?