Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
sbhx
25 / 19 / 1
Регистрация: 02.02.2011
Сообщений: 94
#1

отсоединение от файлов - C++

06.11.2011, 12:04. Просмотров 837. Ответов 12
Метки нет (Все метки)

Извините если подобная тема уже была создана где-то но я не нашел такой. Я использовал команду freopen для подключения файла и ввода в файл а потом хочу опять выводить на экран но не пойму как это сделать? как "отключить" файл и начать вывод на экран заново?

Заранее спасибо.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.11.2011, 12:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос отсоединение от файлов (C++):

Написать программу, которая обеспечивает:начальное формирование каталога файлов;вывод каталога файлов;удаление файлов... - C++
Уважаемые хакеры!Прошу вашей помощи!Я в СИ не особо шарю.((( А на днях уже сдавать.Очень рассчитываю на любую вашу помощь. Вот задача. ...

Раздельная компиляция (нюансы использования заголовочных файлов и файлов реализации) - C++
Почему во многих учебниках функции-члены класса внутри класса только объявляют, но определяют вне самого класса (не, ну как бы в классе, но...

Сравнить содержимое файлов между собой, и если оно совпадает, то вывести на экран имена этих файлов - C++
Прошу помощи у знающих людей. Существует 2 массива, содержащих названия файлов.Требуется сравнить содержимое файлов между собой, и если...

Программное отсоединение базы данных - C++/CLI
Доброго времени суток Подскажите пожалуйста, как можно программно отсоединить базу данных Т.е., для подключения использую строку: ...

Отсоединение шлангов для их смены - Стиральные машины
Появилась необходимость сменить шланги слива/подачи воды на стиральную машину. Какие меры предосторожности нужно соблюсти при отсоединении...

UDP и физическое отсоединение кабеля - C++ Linux
Есть программа посылающая пакету UDP на уд.хост, как программно отследить физическое отсоединение кабеля для того что бы прервать отправку...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
06.11.2011, 12:08 #2
вызывай freopen еще раз, только вместо имени файла передавай NULL
Nameless One
Эксперт С++
5771 / 3420 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
06.11.2011, 12:13 #3
http://c-faq.com/stdio/undofreopen.html
sbhx
25 / 19 / 1
Регистрация: 02.02.2011
Сообщений: 94
06.11.2011, 12:26  [ТС] #4
Спасибо всем кто написал, сделал все кроме NULL... жаль что сам не додумался... ну ладно все равно спасибо всем кто постарался и отвел хотя бы пару секунд)
Nameless One
Эксперт С++
5771 / 3420 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
06.11.2011, 12:38 #5
Цитата Сообщение от Jupiter Посмотреть сообщение
вызывай freopen еще раз, только вместо имени файла передавай NULL
не будет работать
sbhx
25 / 19 / 1
Регистрация: 02.02.2011
Сообщений: 94
06.11.2011, 12:44  [ТС] #6
Цитата Сообщение от Nameless One Посмотреть сообщение
не будет работать
странно а почему у меня сработало? О_о у меня и то и другое сработало)
Nameless One
Эксперт С++
5771 / 3420 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
06.11.2011, 12:56 #7
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от sbhx Посмотреть сообщение
странно а почему у меня сработало? у меня и то и другое сработало)
потому, что freopen закрывает оригинальный файловый поток, а стандартного способа восстановить stdout (stdin, stderr) из строкового параметра не существует. А вообще, покажи код
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
06.11.2011, 13:28 #8
Цитата Сообщение от Nameless One Посмотреть сообщение
Сообщение от Jupiter
вызывай freopen еще раз, только вместо имени файла передавай NULL
не будет работать
действительно не работает, хотя помню точно в древних компилях использовал и работало как-то)
sbhx
25 / 19 / 1
Регистрация: 02.02.2011
Сообщений: 94
06.11.2011, 16:29  [ТС] #9
ну вообще я пользуюсь DEV-C++ это древний компилятор? сейчас перестало работать ну вот часть кода:
C++
1
2
3
4
5
6
7
8
9
10
11
12
          cout << endl << "/t Подождите..." << endl << endl;
          cout << "\t\t 0% |                    |" << endl;
          freopen("C:/Users/Dennis/Desktop/m", "w", stdout);
          cout << "1" << endl;
          freopen(NULL, "w", stdout);
          system("cls");
          cout << "\t\t 1% |*                   |" << endl;
          freopen("C:/Users/Dennis/Desktop/sittings", "w", stdout);
          cout << "0 10" << endl;
          freopen(NULL, "w", stdout);
          system("cls");
          cout << "\t\t 5% |*                   |" << endl;
это типа установки но это не установка это похоже на бред соглашусь) почему перестало работать хотя работало и хорошо работало.... на самом деле это одна часть кода но все-таки разобраться здесь можно и дальше тоже самое... там идут всякие меню это не столь важно... все остальное работает отлично только вот проблема с отменой вывода на экран...
я переробатывал код и получалось без ошибок но все же так у меня получается короче и хотелось бы понять как сделать именно с freopen возвращаться... но если нет другого метода то буду писать более длинным методом все равно спасибо всем)
я пишу консольную игру и в ней нужно если создаешь новые настройки сделать подобную фигню... и хотелось бы разобраться с этим...(( эти файлы будут помогать настройки сохранять и воспроизводить легко и быстро... не хочу с базами данных морочить себе голову)
Nameless One
Эксперт С++
5771 / 3420 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
06.11.2011, 17:01 #10
Цитата Сообщение от sbhx Посмотреть сообщение
ну вообще я пользуюсь DEV-C++ это древний компилятор
это вообще не компилятор, эта среда разработки. Она использует в качестве компилятора (по умолчанию) MinGW. Посмотри, какая версия MinGW у тебя идет с компилятором

Цитата Сообщение от sbhx Посмотреть сообщение
все остальное работает отлично только вот проблема с отменой вывода на экран...
я переробатывал код и получалось без ошибок но все же так у меня получается короче и хотелось бы понять как сделать именно с freopen возвращаться... но если нет другого метода то буду писать более длинным методом все равно спасибо всем)
в общем случае отмена перенаправления для стандартных потоков невозможна. Так что используй отдельные функции для файловых потоков и отдельные - для стандартных потоков

ИМХО, код, который ты привел выше, выглядит достаточно запутанно. Чтобы определить, куда в данный момент будет записываться вывод, приходится искать в коде последнее перенаправление вывода. Удобней будет использовать явный вывод в файл
talis
791 / 543 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
06.11.2011, 17:07 #11
Неужели настолько лень вызывать fopen и fclose и сохранить один несчастный файловый дескриптор?..
sbhx
25 / 19 / 1
Регистрация: 02.02.2011
Сообщений: 94
06.11.2011, 17:14  [ТС] #12
ладно... переписал код, всем ОГРОМНОЕ СПАСИБО!
для меня не очень запутанно но мне кажется что это только для меня так как я знаю весь код и знаю что я делаю и поэтому представляю себе что где находится еще раз спасибо тему можно закрывать все теперь понятно... буду теперь использовать freopen когда буду уверен что не надо будет переключаться опять на вывод на экран а только когда работа идет с файлами...

Добавлено через 6 минут
Цитата Сообщение от talis Посмотреть сообщение
Неужели настолько лень вызывать fopen и fclose и сохранить один несчастный файловый дескриптор?..
спасибо за данные команды но я просто не знал о существовании таких а если бы знал вообще эту тему наверное не заводил
talis
791 / 543 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
06.11.2011, 17:17 #13
Цитата Сообщение от sbhx Посмотреть сообщение
спасибо за данные команды но я просто не знал о существовании таких а если бы знал вообще эту тему наверное не заводил
Дорогие (некоторые) преподаватели программирования! Доупрощались, поздравляю вас!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.11.2011, 17:17
Привет! Вот еще темы с ответами:

Sockjs и node js. Резкое отсоединение от сервера - Node.js
Добрый день, есть сайт, на котором чат пытаюсь написать с помощью sock js и node вроде все хорошо, но бывает неожиданно клиент...

После сброса питания, включается только через отсоединение Power SW - Материнские платы
Поменял процессор, материнку и кулер, и появилась проблема. При подсоединении кабеля питания к блоку питания, компьютер не включается,...

Проверка существования файлов, создание файлов и вывод содержимого файлов на принтер - CMD/BAT
Создать BAT-файл который поддерживает создание файлов проверку их и вывод на принтер. Как это реализовать?? Нужен текст файла!! ...

Распределение файлов по папкам, создаваемым в соответствии с частями имён этих файлов - CMD/BAT
Всем привет, я работаю в сфере 3d визуализации и так получилось что огромные секвенции файлов сохраняются в одну папку. Это очень неудобно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
06.11.2011, 17:17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru