Ошибка C4996: 'scanf': эта функция или переменная могут быть небезопасны в программировании на c
Я создал небольшое приложение, чтобы найти максимальное число с помощью пользовательской функции с параметром. Когда я запускаю его, он показывает это сообщение
Ошибка 1 ошибка C4996: 'scanf': эта функция или переменная могут быть небезопасны. Попробуйте вместо этого использовать scanf_s. Чтобы отключить устаревание, используйте _CRT_SECURE_NO_WARNINGS. Смотрите справку для деталей.
Что мне сделать, чтобы решить эту проблему?
Это мой код
#include<stdio.h>
void findtwonumber(void);
void findthreenumber(void);
int main() {
int n;
printf("Fine Maximum of two number\n");
printf("Fine Maximum of three number\n");
printf("Choose one:");
scanf("%d", &n);
if (n == 1)
{
findtwonumber();
}
else if (n == 2)
{
findthreenumber();
}
return 0;
}
void findtwonumber(void)
{
int a, b, max;
printf("Enter a:");
scanf("%d", &a);
printf("Enter b:");
scanf("%d", &b);
if (a>b)
max = a;
else
max = b;
printf("The max is=%d", max);
}
void findthreenumber(void)
{
int a, b, c, max;
printf("Enter a:");
scanf("%d", &a);
printf("Enter b:");
scanf("%d", &b);
printf("Enter c:");
scanf("%d", &c);
if (a>b)
max = a;
else if (b>c)
max = b;
else if (c>a)
max = c;
printf("The max is=%d", max);
}
8 ответов
Похоже, это просто предупреждение компилятора.
Использование scanf_s
предотвращает возможное переполнение буфера.
Смотрите: http://code.wikia.com/wiki/Scanf_s
Хорошее объяснение почему scanf
может быть опасно: недостатки scanf
Так как предложено, вы можете попробовать заменить scanf
с scanf_s
или отключите предупреждение компилятора.
Еще один способ подавления ошибки: добавьте эту строку вверху в файле C/C++:
#define _CRT_SECURE_NO_WARNINGS
Вы можете добавить "_CRT_SECURE_NO_WARNINGS" в определения препроцессора.
Щелкните правой кнопкой мыши свой проект-> Свойства-> Свойства конфигурации->C/C++ -> Препроцессор-> Определения препроцессора.
Другой способ - когда вы создаете новый проект, вы не нажимаете на проверки жизненного цикла разработки безопасности (SDL):
Или, если вы работаете в проекте: щелкните правой кнопкой мыши свой
project->Properties->Configuration Properties->C/C++ ->All Options>
Прокрутите мышку и найдите
SDL checks
, вы редактируете его на
NO(/sdl-)
, затем Применить, ОК
Чтобы отключить предупреждение компилятора, добавьте в самый верх вашей программы следующий оператор:
#define _CRT_SECURE_NO_WARNINGS
Вместо того, чтобы использовать
scanf
, попробуй использовать
scanf_s
Это будет работать...
Простой ответ: функция scanf() считывает символ / строку от первого символа до первого пробела.
#define scanf scan_f
заменить небезопасную версию на безопасную.