Вызвано исключение по адресу нарушение прав доступа при записи по адресу. Программирование на С

Столкнулся с подобного рода проблемой. Пытаюсь скомпилировать следующий пример из учебника:

введите сюда описание изображения

printf("Type in your expression.\n");
scanf_s("%f %c %f", &value1, &operator, &value2);

if (operator=='+')
    printf("%.2f\n", value1 + value2);
else if (operator=='-')
    printf("%.2f\n", value1 - value2);
else if (operator =='*')
    printf("%.2f\n", value1 * value2);
else if (operator=='/')
    printf("%.2f\n", value1 / value2);

return 0;

Проблема следующая: После ввода выражения в командную строку (например 4.5+3.2) вылезают вот такие ошибки. Возможно, вы сталкивались с подобного рода проблемами ранее и знаете как их решать? введите сюда описание изображения введите сюда описание изображения Нужно сказать, что для ввода значений в учебнике используется scanf, а в моем случае VS19 банально отвергает scanf и насильно заставляет использовать scanf_s, что я собственно в течение всего процесса изучения. Копался в описании этой функции и ошибок не увидел. Не судите строго за вопрос. Я только начинаю делать шаги в этом направлении=) Заранее спасибо за помощь.


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

Автор решения: Harry

Неверно использована scanf_s. Может, в оригинале был вызов scanf? Так это разные функции...

Например, для scanf и чтения одного char достаточно

scanf("%c", &c);

а вот для scanf_s - на то она и безопасная :) - надо указать размер переменной:

scanf_s("%c", &c, 1);

Вот и получилась у вас ерунда...

Документация по scanf_s от MS - тут.

→ Ссылка