为什么这些指针数组会导致运行时崩溃?

时间:2015-02-02 01:57:06

标签: c++ arrays sorting pointers

我想知道我是否在这些指针数组中做错了什么?我已经完成了我的代码,但无法弄清楚为什么它会在运行时崩溃。 我猜测它在我的过程中会让它崩溃。

这是代码 功能

#include "flightInfo.h"

int getFromFileToArray(fstream& flight, char FILE[], FLIGHTInfo *AllFlight[])
{
    flight.open (FILE,ios::in);

if(!flight)
{
    cout << "File opened for reading failed" << endl;
    exit (-1);
}

cout << "File Found and is opened for reading." << endl;

int i = 0;

char flightType;

while (flight >> flightType)
{
    AllFlight[i] = new FLIGHTInfo;
    switch(flightType)
    {
        case 'A':
            AllFlight[i]->flightT = 'A';
            flight >> AllFlight[i]->FLIGHT;
            flight >> AllFlight[i]->destination;
            flight >> AllFlight[i]->TIME;
            flight >> AllFlight[i]->terminal;
            flight >> AllFlight[i]->gate;
            break;
        case 'D':
            AllFlight[i]->flightT = 'D';
            flight >> AllFlight[i]->FLIGHT;
            flight >> AllFlight[i]->destination;
            flight >> AllFlight[i]->TIME;
            flight >> AllFlight[i]->terminal;
            flight >> AllFlight[i]->gate;
            flight >> AllFlight[i]->chkInCounter;
            break;
    }
    i++;
    flight.clear();
    flight.ignore(100,'\n');
}
flight.close();
}

我已经在这里呆了几天了。提前谢谢。

2 个答案:

答案 0 :(得分:4)

您的代码受到未定义的行为的影响。您不会从getFromFileToArray返回任何内容,但您正在使用:

int size = getFromFileToArray(flight,"infile.txt",AllFlight);

如果在函数结束前将getFromFileToArray添加到return i; ,则程序可能会正常工作。

{{1}}

答案 1 :(得分:1)

有一些问题:

不会导致崩溃的小问题:

  • srand(time(NULL))应该只使用一次,通常是在程序启动时。
  • rand()%1-30总是-30。
  • ProcessTheArray对数组size进行排序。这似乎没必要。

可能导致崩溃的主要问题:

  • 您不会从getFromFileToArray返回值。您的编译器应该已经警告过您。
  • 您永远不会初始化status字段。
  • 你在很多地方拼错了“strcpy”。