Run-Time Check Failure #2 - Stack around the variable 'c' was corrupted. Помогите, почему исключение?

#include <iostream>
#include <stdio.h>
#include <Windows.h>
using namespace std;

int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    
    char c,
         f, 
         b;
    unsigned char n;
    unsigned int UnitStateWord;
    printf("Введите код состояния (0 - 31) >");
    scanf_s("%d", &c);
    UnitStateWord = ((unsigned char)c & 0x1F) << 11;
    return 0;

}

Ответы (1 шт):

Автор решения: Harry
scanf_s("%d", &c);

Читаете как int, но не в 4-байтный int, а в однобайтный char.

Перезаписывая 3 лишних байта в стеке. Портя стек вокруг переменной c. О чем и говорит сообщение...

→ Ссылка