как убрать предупреждения об использовании scanf в Qt?

Я использовал scanf () в своей программе, когда я компилируюя получаю много предупреждений относительно использования scanf следующим образом: D: \ myspace \ projectsnf \ NNFAdaptor \ NNFAdaptor \ main.cpp C4996: 'зсапЕ»: Эта функция или переменная может быть небезопасной. Попробуйте вместо этого использовать scanf_s. Чтобы отключить устаревание, используйте _CRT_SECURE_NO_WARNINGS.

Я также пытался использовать _CRT_SECURE_NO_WARNINGS, но он не присутствует в моем Qt (заголовки), он отображается как ошибка.

Ответы на вопрос(2)

Этот класс предупреждений в основном неправильный (особенно о том, что использовать вместо этого), но это действительно так, что вы не должны использоватьscanf, так как:

Очень легко написать спецификацию формата, которая опасна так же, какgets это опасно, то есть он будет писать за концом буфера, не замечая этого. Этоявляется можно написать спецификации формата, которые неУ меня нет этой проблемы, но она намного сложнее.Почти невозможно написатьscanfсинтаксический анализатор ввода, который может надежно обрабатывать некорректные входные данные.Переполнение в любом числовом преобразовании является технически неопределенным поведением, что означает, что библиотеке C разрешено сбой вашей программы только потому, что кто-то набрал слишком много цифр. (Хорошие библиотеки C не будут делать ничего хуже, чем создавать мусор в вашей переменной результата, но это само по себе может быть головной болью.)

Вам следуетне использованиеscanf_s вместо; он пытается решить проблему 1, но нене удается, и это неt решить проблемы 2 и 3 вообще. Поскольку вы используете Qt, я рекомендую:

Читайте целые строки вstd::stringс помощью.std::getlineРазобрать их с.QRegExpПреобразовать числовые строки в числа с помощью, например, ,QString::toDouble

Если ваш входной синтаксис является более сложным, чем регулярные выражения могут обрабатывать, расследуйте.QLALR

Решение Вопроса

Положил#define _CRT_SECURE_NO_WARNINGS в верхней части вашего main.cpp (перед любым#includes).

Ваш ответ на вопрос