Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.03.2010, 21:32   #1
ZigaZaga
Пользователь
 
Регистрация: 20.02.2010
Сообщений: 27
По умолчанию явно тривиальная ошибка...но где?

елси сразу не открылся файл, то в цикле, он вообще не хочет.

Код:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
void main()
{
	string filename;
	fstream fin;
	cout << "Enter the name of the file: ";
	cin >> filename;
	fin.open(filename.c_str(), ios_base::binary);
	while(!fin.is_open())
	{
		fin.clear();                                          
		fin.close();
		cout << "\nNo file on such directory!\n";
		cout << "Enter the name of the file: ";
		cin >> filename;
		cin.get();
		fin.open(filename.c_str(), ios_base::binary);
	}
	
}
ZigaZaga вне форума Ответить с цитированием
Старый 03.03.2010, 22:21   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

А с чего вдруг он должен открыться в цикле? Хотите достать настолько компьютер, чтобы тот от безысходности сам создал и открыл нужный файл?
pu4koff вне форума Ответить с цитированием
Старый 03.03.2010, 22:33   #3
ZigaZaga
Пользователь
 
Регистрация: 20.02.2010
Сообщений: 27
По умолчанию

ООО. такой вариант был))) чтобы он сам сдался..

с чего он должен открыться? с того что вызываеться метод open(), и как только открылся, из цикла должны выпадать. но вот почему то, он совершенно не находит файл в папке, если мы уже в цикле.
и я рад что вы намекнули что ошибка тривиальна.
ZigaZaga вне форума Ответить с цитированием
Старый 03.03.2010, 22:48   #4
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

1. Либо добавьте по OR ios_base::in при открытии, либо оставьте только ios_base::binary, но файл сделайте класса ifsream.

2. В цикле, действительно, какую-то возможность для "надоело вводить" предусмотрите

3. Закрывать (как и чистить) файл, который просто не был открыт как-то... нелогично, нет?
Vago вне форума Ответить с цитированием
Старый 03.03.2010, 22:59   #5
ZigaZaga
Пользователь
 
Регистрация: 20.02.2010
Сообщений: 27
По умолчанию

Цитата:
Сообщение от Vago Посмотреть сообщение
1. Либо добавьте по OR ios_base::in при открытии, либо оставьте только ios_base::binary, но файл сделайте класса ifsream.

2. В цикле, действительно, какую-то возможность для "надоело вводить" предусмотрите

3. Закрывать (как и чистить) файл, который просто не был открыт как-то... нелогично, нет?
О спасибо! помогли.

да нелогично. но эт для надёжности. ведь хуже не может же быть от clear() и close()? или может?

реально спасибо!
ZigaZaga вне форума Ответить с цитированием
Старый 03.03.2010, 23:12   #6
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от ZigaZaga Посмотреть сообщение
или может?
Мне, ей Богу, лень лезть в стандарт по "плюсам", но в чистом C попытка выдать fclose() на файл, который не был открыт, приводит к ошибке. Поэтому я давно себя приучил такую ситуацию просто не создавать.

Цитата:
Сообщение от ZigaZaga
реально спасибо!
Не за что
Vago вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
где ошибка? О.о ConChita Общие вопросы C/C++ 2 23.11.2009 10:45
Где ошибка??? beygul Помощь студентам 5 06.11.2009 21:00
Где ошибка? stas77 Microsoft Office Excel 11 02.11.2009 18:26
Тривиальная задача Cpluser Общие вопросы C/C++ 1 23.09.2009 00:19