2015-02-02 5 views
-2

Мне было интересно, если я делаю что-то неправильно в этих массивах указателей? Я сделал свои коды, но не могу понять, почему он падает во время выполнения. Я угадываю его в моем процессе, что он разбился.Почему эти массивы указателей вызывают сбои во время выполнения?

Вот код Функции

#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

Извините, и где я могу это найти? im новый для кодирования извините за причиненные неудобства – DeathbeByUs

+0

yup Я только что увидел его. им жаль, что у вас плохой титул. спасибо, что помогли мне :) очень ценю это! – DeathbeByUs

+0

erm, так что я должен собираться просмотреть код? но он падает, поэтому я подумал, что это будет хороший выбор. извините, ребята :( – DeathbeByUs

ответ

4

Ваш код подлежит неопределенному поведению. Ты ничего не вернулся из getFromFileToArray и все же вы используете:

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

Если добавить следующую строку в getFromFileToArray только до конца этой функции, программа может работать.

return i; 
+2

Downvoter, позаботьтесь о себе? –

+0

он сделал! omg теперь я просто чувствую себя таким немым ... всегда беспокоясь, что это мой указатель, который потерпел неудачу и не смог реализовать свою простую проблему, когда я забыл вернуть свой размер из функции. Большое спасибо! – DeathbeByUs

+0

Что такое downvoter? – DeathbeByUs

1

Есть несколько проблем:

Незначительные проблемы, которые не вызывают вашу аварию:

  • srand(time(NULL)) следует использовать только один раз, как правило, при запуске программы.
  • rand()%1-30 всегда -30.
  • ProcessTheArray сортирует массив size раз. Это кажется ненужным.

Основные проблемы, которые могут привести к вашей аварии:

  • Вы не возвращают значение из getFromFileToArray. Ваш компилятор должен был предупредить вас об этом.
  • Вы никогда не инициализируете поле status.
  • У вас есть правописание «strcpy» неправильно в нескольких местах.
+0

. спасибо за ваш ответ. Я хотел сделать strcpy. но в итоге набрал strcmp. однако что значит u, значит, я не инициализировал поле статуса? – DeathbeByUs

Смежные вопросы