我想知道我是否在这些指针数组中做错了什么?我已经完成了我的代码,但无法弄清楚为什么它会在运行时崩溃。 我猜测它在我的过程中会让它崩溃。
这是代码 功能
#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();
}
我已经在这里呆了几天了。提前谢谢。
答案 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
字段。