Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> fopen_s или fopen 
:(
    Опции темы
Mormishka
Дата 26.3.2011, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 236
Регистрация: 25.8.2010

Репутация: нет
Всего: нет



что лучше использовать?
PM MAIL   Вверх
Фантом
Дата 26.3.2011, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: 4
Всего: 49



fopen. Функции fopen_s в языках C и C++ нет.
PM   Вверх
500mhz
Дата 26.3.2011, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


шайтан
***


Профиль
Группа: Завсегдатай
Сообщений: 1017
Регистрация: 5.5.2008
Где: Киев / Italy

Репутация: 1
Всего: 14





--------------------

PM MAIL ICQ   Вверх
Mormishka
Дата 26.3.2011, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 236
Регистрация: 25.8.2010

Репутация: нет
Всего: нет



Я к тому что он пишет 
Код

warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

PM MAIL   Вверх
borisbn
Дата 26.3.2011, 21:57 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



fopen_s есть только в студии. больше ни в одном другом компиляторе.
fopen - стандартная функция Си. Есть во всех компиляторах

Добавлено через 1 минуту и 40 секунд
просто
Цитата(Mormishka @  26.3.2011,  21:54 Найти цитируемый пост)
To disable deprecation, use _CRT_SECURE_NO_WARNINGS

и не парься smile


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
semibug
Дата 26.3.2011, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 323
Регистрация: 27.3.2009

Репутация: нет
Всего: нет



Если ++ то лучше потоки (fstream).
Игнорировать или глушить ворнинги не советую, лучше написать fopen_s.
Для иных компилеров можно влепить адаптер, например такой:
Код

errno_t fopen_s(FILE **f, const char *name, const char *mode) {
    errno_t ret = 0;
    assert(f);
    *f = fopen(name, mode);
    if (!*f)
        ret = errno;
    return ret;
}


PM   Вверх
borisbn
Дата 26.3.2011, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Цитата(semibug @  26.3.2011,  22:07 Найти цитируемый пост)
Если ++ то лучше потоки (fstream).

почему? чем лучше?

Цитата(semibug @  26.3.2011,  22:07 Найти цитируемый пост)
Игнорировать или глушить ворнинги не советую

игнорировать - да плохо, а  глушить ворнинги на деприкацию стандартных функций - нормально. Мало ли что в недрах мелкомягких решили. Мне, например, они не указ.

Цитата(semibug @  26.3.2011,  22:07 Найти цитируемый пост)
лучше написать fopen_s.

чем лучше? кому лучше?



--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
alexvs11
Дата 26.3.2011, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


hell is here
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 21.8.2010

Репутация: 2
Всего: 10



borisbn, деструктором лучше, operator!ом лучше
ну и из любимого холивара std::cout/printf вытикает, что std::fstream лучше
PM MAIL   Вверх
borisbn
Дата 26.3.2011, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Цитата(alexvs11 @  26.3.2011,  22:18 Найти цитируемый пост)
из любимого холивара std::cout/printf вытикает, что std::fstream лучше

из холиваров ничего не вытикает. на то они и холивары smile
запишите такое
Код
fprintf( f, "%03d°%02d'%4.1f\"", d, m, s );

в iostream и сравните код.
operator! - не аргумент.
Код

FILE * f = ...
if ( !f ) { ...

деструктор - вот единственный аргумент, но я себе сделал класс обёрточку и в деструкторе закрываю файл. Плюс оператор преобразования к FILE*


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
semibug
Дата 26.3.2011, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 323
Регистрация: 27.3.2009

Репутация: нет
Всего: нет



Цитата(borisbn @  26.3.2011,  22:15 Найти цитируемый пост)
почему? чем лучше?

чем fopen/fopen+s

Цитата(borisbn @  26.3.2011,  22:15 Найти цитируемый пост)
а  глушить ворнинги на деприкацию стандартных функций - нормально. Мало ли что в недрах мелкомягких решили. Мне, например, они не указ.

Не встречал однозначно бессмысленных ворнингов от майкрософта. Все они так или иначе указывают на участки с потенциальными  проблемами.

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

PM   Вверх
alexvs11
Дата 26.3.2011, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


hell is here
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 21.8.2010

Репутация: 2
Всего: 10



borisbn
Код

f << boost::format( "%03d°%02d'%4.1f" ) % 5 % 6 % 0.3;

?
PM MAIL   Вверх
semibug
Дата 26.3.2011, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 323
Регистрация: 27.3.2009

Репутация: нет
Всего: нет



Цитата(borisbn @  26.3.2011,  22:38 Найти цитируемый пост)
но я себе сделал класс обёрточку и в деструкторе закрываю файл. Плюс оператор преобразования к FILE* 

Помню, когда только начинал изучать C++ написал класс для реализации списка. Тогда казалось крутой фишкой в нем - "интеллектуальное" резервирование памяти под возможный рост.. Потом увидел std::list..
Велосипедить, и накручивать на fopen класс с деструктором, +100500 крутых прибамбасов, в общем случае просто интересное занятие. Для дела берем универсальное готовое решение. Ну а если уж специфический случай какой, берем fopen и тщательно все продумываем.


Цитата(borisbn @  26.3.2011,  22:38 Найти цитируемый пост)
fprintf( f, "%03d°%02d'%4.1f\"", d, m, s );


Переписав в потоки получим больше букв, но безопасность несомненно возрастет.




PM   Вверх
alexvs11
Дата 26.3.2011, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


hell is here
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 21.8.2010

Репутация: 2
Всего: 10



Цитата(semibug @  26.3.2011,  22:57 Найти цитируемый пост)
Ну а если уж специфический случай какой, берем fopen и тщательно все продумываем.

да ну нафиг, отвык от FILE*, теперь аж передергивает, когда на си приходится писать smile 

PM MAIL   Вверх
borisbn
Дата 26.3.2011, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Цитата(semibug @  26.3.2011,  22:42 Найти цитируемый пост)
Не встречал однозначно бессмысленных ворнингов от майкрософта. Все они так или иначе указывают на участки с потенциальными  проблемами.

вот хоть убей, не пойму чем это
Код
FILE * f;
fopen_s( &f, name, mode);

безопаснее, чем это
Код
FILE * f = fopen( name, mode);

alexvs11, это (boost) нечестно smile


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
semibug
Дата 26.3.2011, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 323
Регистрация: 27.3.2009

Репутация: нет
Всего: нет



Цитата(alexvs11 @  26.3.2011,  22:59 Найти цитируемый пост)
да ну нафиг, отвык от FILE*, теперь аж передергивает, когда на си приходится писать

Эт точно ))
Думаю случай (если кончено файловые потоки доступны) гипотетический, например нужно жутко оптимизировать работу с файлами, но при этом оставаться в рамках языка (не знаю, сколько там можно будет выиграть, сдаётся что совсем ничего).

PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1106 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.