У меня проблемы с чтением данных из файла в список в классе. Похоже, что где-то подбирается лишнее шестнадцатеричное значение.
Данные: (как я хочу, чтобы вывод выглядел)
Вывод: (дополнительный 0x4463c4 включается случайным образом)
Вот небольшой код, который я считаю актуальным. Может ли кто-нибудь сообщить мне об ошибках, которые я мог допустить?
Где данные считываются в программу из файла (основного):
struct filmType
{
char number[6];
char copy;
char title[31];
char rent_id[5];
char rent_date[9];
char return_date[9];
};
orderedList <filmType> orderedList;
filmType newItem;
//start of struct record
filmFile.open("films.txt", ios::in);
filmFile >> numFilm;
filmFile.get();
while (!filmFile.eof())
{
filmData.copy = filmFile.get();
readString(filmFile, newItem.title,30);
readString(filmFile, newItem.rent_id,4);
readString(filmFile, newItem.rent_date,8);
readString(filmFile, newItem.return_date,8);
filmFile.get();
orderedList.insert (newItem);
readString(filmFile, filmData.number,5);
}
Функция orderlist.insert: (заполняет список в классе)
void orderedList<elemType>::insert(const elemType& newItem)
{
int index = length - 1;
bool found = false;
if (length == MAX_LIST)
throw string ("List full - no insertion");
// index of rear is current value of length
while (! found && index >= 0)
if (newItem < list[index])
{
list[index + 1] = list [index]; // move item down
--index;
}
else
found = true;
list [index + 1] = newItem; // insert new item
++length;
}
Функция Orderedlist.display: (выводит список на консоль)
void orderedList<elemType>::display() const
{
int index;
if (length == 0)
throw string ("List empty");
for (index = 0; index < length; ++ index)
cout << list[index] << endl;
}
readString:
void readString (fstream & inFile, char * string, int length)
{
inFile.get (string, length + 1);
}
Любая помощь приветствуется, дайте мне знать, если что-то нужно уточнить или нужно увидеть больше кода из программы. Спасибо!
readString
имеет отношение к делу? - person K-ballo   schedule 18.10.2011std::exception
.std::logic_error
илиstd::runtime_error
- очевидные кандидаты. - person Tom Kerr   schedule 18.10.2011