变量 'sortArray' 周围的堆栈已损坏

Stack around the variable 'sortArray' was corrupted

运行-时间检查失败 #2 - 变量 'sortArray' 周围的堆栈已损坏。

我在最后一行看到这个,该程序旨在创建一个随机数列表,然后对它们进行排序(WIP)。我认为这可能是数组大小小于 test.txt 中的行数,所以我将它从 100 增加到 101 无济于事。

//#include <cstdlib>
#include <iostream>
#include <fstream>  
#include <ctime>
#include <string>

using namespace std;

int main()
{
    //srand(time(NULL));
    std::ofstream outfile("C:\Users\smasher248\Desktop\test.txt");
    int randomNumber;
    for (int x = 0; x < 100; x++)
    {
        randomNumber = rand() % 9000 + 1000;
        outfile << randomNumber <<"\n";

    }

    outfile.close();
    std::ifstream infile("C:\Users\smasher248\Desktop\test.txt");
    std::string lineHolder;
    int lineCounter = 0;
    int sortArray[101];
    while (std::getline(infile, lineHolder))
    {
        sortArray[lineCounter] = stoi(lineHolder);
        cout << sortArray[lineCounter] << "\n";
        lineCounter++;
    }
    infile.close();
    int swapContainer;
    for (int i = 0; i < 101; i++)
    {
        if (sortArray[i] > sortArray[i+1])
        {
            swapContainer = sortArray[i];
            sortArray[i] = sortArray[i + 1];
            sortArray[i + 1] = swapContainer;
        }
        std::ofstream sortedFile("C:\Users\smasher248\Desktop\test_sorted.txt");

        sortedFile << sortArray[i] << "\n";
    }
}

您只需对代码进行一些更改。

  • 在您的代码开头包含 <algorithm>
  • ofstream(...) 中,添加 ..., std::ios::app) 以追加到文件中。
  • 要对数组进行排序,删除 ofstream 语法上方的整个条件表达式块并在循环外添加 std::sort(sortArray, sortArray + 100) .
  • 在该 For 循环中将值 101 更改为 100

大功告成。