fopen_s
- это вариант fopen
, который содержит проверку параметров и возвращает код ошибки вместо указателя на случай, если что-то пойдет не так во время открытого процесса. Это более безопасно, чем базовый вариант, потому что учитывает больше граничных условий. Компилятор предупреждает о необходимости его использования, поскольку fopen
представляет собой потенциальный вектор использования в вашем приложении.
Вы можете указать цифры точности для семейства функций printf
, используя спецификатор %.xg
, где x - это цифры точности, которые вы хотите получить при выводе. Точность A long double
варьируется от платформы к платформе, но вы можете сделать ставку, если она не менее 16 цифр десятичной точности.
Редактировать: Хотя я не совсем согласен с другими, которые предполагают, что fopen_s
- это полная пустая трата времени, это представляет довольно низкий шанс эксплуатации, и это не так широко поддерживается. Однако некоторые другие функции, о которых говорится в C4996, являются гораздо более серьезными уязвимостями, и использование _CRT_SECURE_NO_WARNINGS
эквивалентно отключению будильника как для «вы оставили дверь в спальню незапертой», так и для «ядерной бомбы на кухне ».
Пока вы не ограничены использованием «чистого C» для своего проекта (например, для школьного задания или встроенного микроконтроллера), вам будет полезно использовать тот факт, что почти все современные компиляторы C также являются компиляторами C ++ и используйте варианты всех этих функций ввода / вывода для C ++ iostream
, чтобы одновременно обеспечить одновременно улучшенную безопасность и .