Вызвано исключение по адресу нарушение прав доступа при записи по адресу. Программирование на С
Столкнулся с подобного рода проблемой. Пытаюсь скомпилировать следующий пример из учебника:
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 шт):
Неверно использована scanf_s. Может, в оригинале был вызов scanf? Так это разные функции...
Например, для scanf и чтения одного char достаточно
scanf("%c", &c);
а вот для scanf_s - на то она и безопасная :) - надо указать размер переменной:
scanf_s("%c", &c, 1);
Вот и получилась у вас ерунда...
Документация по scanf_s от MS - тут.
