С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
14 / 14 / 8
Регистрация: 26.09.2007
Сообщений: 919
1

Для чего nul fopen

06.07.2020, 21:52. Показов 1277. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет люди. У меня есть кусок кода:

C++
1
2
3
4
5
6
7
8
9
10
int main(void)
{
    FILE *fp;
    fp = fopen("nul", "wt");
    fprintf(fp, "%x", 0x666);
    fflush(fp);
    fclose(fp);
 
    return 0;
}
Я не понимаю что делает fopen с параметром nul. Предварительно ознакомился, что параметр nul в функции fopen значит записать данные в память. Но как я понял доступа к этому участку памяти нету из программы. Вопрос- для чего используется этот трюк с fopen nul? Какие цели решаются когда fopen вызывается с параметром nul? Заранее спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.07.2020, 21:52
Ответы с готовыми решениями:

Для чего нужно писать в int main() в скобках всякие args потом объявлять переменные, и прочее. Для чего если можно в сборках это все обьявлять.
Для чего нужно писать в int main() в скобках всякие args потом объявлять переменные, и прочее. Для...

Вместо кода NUL NUL NUL NUL
Что делать? Написал частично программу, сегодня открываю код, а тут это. Что делать? Что произошло?

Warning: fopen(t3.txt) [function.fopen]: failed to open stream:
Привет, у меня возникли такиe проблемы: 1.веду поиск в папке Texte. Папка находится в папке...

fopen не читает из URL - Warning: fopen('http://www....','r') - Bad file descriptor in .....gethtml.php on line 16
Как известно с помощью fopen можно прочитать данные не только из файла но и из URL. Проблема в...

7
Вездепух
Эксперт CЭксперт С++
12792 / 6669 / 1795
Регистрация: 18.10.2014
Сообщений: 16,878
06.07.2020, 22:02 2
Цитата Сообщение от kurlyak Посмотреть сообщение
Я не понимаю что делает fopen с параметром nul.
Там нет никакого параметра nul. Там есть аргумент "nul". Это просто строка. В строке может быть написано что угодно. Хоть "vasya", хоть "nul". Это просто имя файла.

Цитата Сообщение от kurlyak Посмотреть сообщение
Предварительно ознакомился, что параметр nul в функции fopen значит записать данные в память.
Нет, ничего подобного он не означает. Означает ли имя файла "nul" что-то особенное или не означает зависит от особенностей платформы, на которой будет выполняться данный код.

На некоторых платформах имя файла "nul" будет расценено как имя специального устройства, которое просто выкидывает все записываемые в него данные "в никуда". А на некоторых платформах это будет просто имя файла.
1
14 / 14 / 8
Регистрация: 26.09.2007
Сообщений: 919
09.07.2020, 17:52  [ТС] 3
Спасибо за ответ, у меня еще вопрос- например под Win32 это NUL что значит? Просто имя файла или какое то устройство? И вот меня как раз интересует- зачем предусмотрена такая возможность, выкидывать в никуда данные, как вы говорите:
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
просто выкидывает все записываемые в него данные "в никуда"
0
4019 / 2565 / 430
Регистрация: 09.09.2017
Сообщений: 11,437
10.07.2020, 11:11 4
kurlyak, насколько я помню, да. В UNIX-подобных для этого используется файл /dev/null, в win32 - nul. Но можно и проверить: echo "123" > nul Если файл будет создан, то я ошибся, если нет - в него можно выкидывать любой мусор.
В wine проверил - там работает. В такой фундаментальной для ДОСа вещи они вряд ли накосячили.
1
Вездепух
Эксперт CЭксперт С++
12792 / 6669 / 1795
Регистрация: 18.10.2014
Сообщений: 16,878
10.07.2020, 11:14 5
Лучший ответ Сообщение было отмечено kurlyak как решение

Решение

Цитата Сообщение от kurlyak Посмотреть сообщение
Спасибо за ответ, у меня еще вопрос- например под Win32 это NUL что значит? Просто имя файла или какое то устройство?
В Windows это именно устройство, ведущее "в никуда".

Цитата Сообщение от kurlyak Посмотреть сообщение
зачем предусмотрена такая возможность
Ну например вы хотите запустить какой-то процесс, который выводит некую служебную информацию на стандартный выход. В общем случае эта информация может быть полезна, но вот в данном случае вы хотите, чтобы он отработал молча, т.е. чтобы его вывод не появлялся в консоли. Вот именно для этого вы можете перенаправить вывод этого процесса на устройство nul. Процесс будет ни о чем не подозревая выводит что-то на свой стандартный выход, а на само деле все это будет улетать "в никуда".
1
14 / 14 / 8
Регистрация: 26.09.2007
Сообщений: 919
11.07.2020, 16:58  [ТС] 6
Спасибо большое TheCalligrapher, понятно что можно вывод процесса перенаправить на nul и тогда в консоли этот процесс ничего не сможет напечатать- все будет улетать "в никуда" образно выражаясь. Ну а конкретно в моем случае fopen("nul", "wt") чего мы добиваемся? Что не будет- например печататься в консоли? Или мы делаем fopen("nul", "wt") а потом якобы в этот открытый nul файл перенаправляем вывод- якобы "nul" это открытый файл в который мы перенаправляем вывод с консоли? Я правильно понял?
0
4019 / 2565 / 430
Регистрация: 09.09.2017
Сообщений: 11,437
11.07.2020, 17:49 7
Цитата Сообщение от kurlyak Посмотреть сообщение
Ну а конкретно в моем случае fopen("nul", "wt") чего мы добиваемся?
Похоже, проблем на пустом месте. Если вам не нужен вывод в файл, зачем его вообще писать?
0
2565 / 1277 / 468
Регистрация: 08.11.2016
Сообщений: 3,525
11.07.2020, 17:56 8
kurlyak, конкрено в Вашем случае, Вам виднее зачем Вам нуль-устройство, в теории может быть так что вы некий отладочный вывод направляете в стандартный выходной поток, как- то так
C++
1
2
3
std::ostream *out = &std::cout;
//...statements....
*out << myDebugMessageClass.error();
пока выполняете отладку пользуетесь этим воыводом, а при выпуске релиза делаете что-то такое
C++
1
2
// std::ostream *out = &std::cout;
std::ofstream *out = &(fopen("nul", "wt"));
перенаправляя отладочный вывод в нуль-устроцство.
0
11.07.2020, 17:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.07.2020, 17:56
Помогаю со студенческими работами здесь

Для чего нужен Seed() и для чего его override?
Привет, ребята. Прочитал много разных статей про Seed(). И так и не могу понять зачем он нужен на...

Вывод WMIC в nul
Добрый день. Есть батник, по ходу которого удалённый ПК перезагружается, а после перезагрузки...

Функция fopen() для большого текстового файла читает только первую строку
Есть текстовой файл 4.5 мб, нужно его открыть для чтения из него строк. FILE *f =...

Nul в JTextField, валидация данных
Есть такое поле JTextField amScore=new JTextField(&quot;&quot;); есть такая функция, которая пропускает...

Различия перенаправлений в nul и NULL
pause &gt; NUL pause &gt; NULL pause &gt;&gt; NUL pause &gt;&gt; NULL Чем отличаются NUL и NULL? Есть ли...

Команда «ping -n 3 127.0.0.1 > NUL»
Растолкуйте непонятное, плиз.( С чем едят фрагмент 127.0.0.1 &gt; NUL Справка на этот счет...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru