Здравствуйте! Такая проблема - Турбо С++ делаю приложение, имитирующее меню ресторана. Данные читаются из файла.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int i,j;
n=StrToInt(Edit1->Text);//Считываем количество клиентов
Randomize();
f=0; j=1; i=1;
ifstream input_file("Menu1.txt");
char line[64];
while (i<=n)
{
if (input_file.eof()) {
input_file.close();
ifstream input_file("Menu1.txt");
};
input_file.getline(line, sizeof(line));
StringGrid1->Cells[1][j]=line;//Название
input_file.getline(line, sizeof(line));
StringGrid1->Cells[2][j]=line;//Cостав
//Обслуживание клиента в ресторане
vibor=Random(1795)+5;//Выбор клиентом блюд 5 сек до 1800 сек
zayavka=Random(160)+20;//Официант относит заявку от 20 сек до 2 минуты
input_file.getline(line, sizeof(line));
gotovka=StrToInt(line);//Готовка из БД (+5 мин)
polychenie=Random(300)+15;//Получить от 15 сек до 10 мин
dostavka=Random(40)+10;//Отнести от 10 сек до 50 сек
t=vibor+zayavka+gotovka+polychenie+dostavka;
f=f+t;
StringGrid1->Cells[3][j]=IntToStr(gotovka)+" мин";
StringGrid1->Cells[4][j]=FloatToStr(t/60)+" мин";
StringGrid1->Cells[0][j]=IntToStr(i);
j++;
if ((Random(3)%2)==0) {
i++;
};
};
}
содержимое файла:
Ассорти сырное
гауда, чечел, дор блю, виноград, грец.орехи
15
Милано Кап
мороженное шоколадное, фундук, сироп шоколадный, сливки взбитые
13
Ассорти овощное
помидоры св., огурцы св., перец болгарский, зелень
6
Персиковая Мельба
мороженное ванильное, персики консер., взбитые сливки
10
Рулетики из баклажанов
баклажаны, грец.орехи, майонез, чеснок, зелень
8
Мне нужно, чтобы при дочтижении конца строки считывание опять возвращалось в начало файла..Но почему-то у меня считывается последнее значение (8), при следующем считывании значение становится равным '' (не ' '), спокойно проходит проверку,что это не конец файла и дальше прога вылетает, ибо " ''' is not a valid integer value"..Я так поняла, что во этот символ последний ('') и есть признак конца файла, так почему он проверку тогда проходит? Может,я неправильно её вызываю, или в чем тогда дело?