Исключение 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;
}
→ Ссылка