Исключение scans [C]
Код:
#include <stdio.h>
#define PRAISE "How are you?"
int main(void)
{
char name[40];
printf("What is your name? ");
scanf("%s", name);
printf("Hello, %s. %s\n", name, PRAISE);
return 0;
}
При попытке ввести строку в scans выдает исключение
Ошибка C4996 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details
Если изменить scans на scans_f то выдает уже другое исключение
Вызвано исключение по адресу 0x00007FFDE1BD217D (ucrtbased.dll) в First.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0x0000008C91100000.
Код скопирован из учебника (Язык программирования C. Стивен Прата), но не смотря на это работать не хочет. В чем может быть проблема?
Пробовал убирать scans и вводить строку через переменную, все работает.
Спасибо!
Ответы (3 шт):
Автор решения: Anatoli OtBoli
→ Ссылка
Добавил в самом верху:
#pragma warning(disable : 4996)
Скорее всего, решение не верное, но работает.
Автор решения: Qwertiy
→ Ссылка
Ну что мешает сообщение об ошибке прочитать?
Ошибка C4996 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
Автор решения: Harry
→ Ссылка
И что мешает верно использовать scanf_s?
#include <stdio.h>
#define PRAISE "How are you?"
int main()
{
char name[40];
printf("What is your name? ");
scanf_s("%s", name, 40);
printf("Hello, %s. %s\n", name, PRAISE);
return 0;
}