У меня проблемы с функцией scanf_s(); функции или функции переключения, при первом запуске кода он не распознает правильный символ и возвращается к началу, но после этого он работает нормально. Это простой калькулятор.
Вероятно, для этого есть какое-то простое решение, поскольку я только начал изучать программирование, но я не могу его найти.
Весь текст на финском, но надеюсь сам код понятен.
Все отзывы приветствуются, так как я очень хочу узнать, что я должен и не должен делать.
#include <stdio.h>
#include <stdlib.h>
float luku1 = 0;
float luku2 = 0;
float tulos = 0;
char valinta = '\0';
int main()
{
system("cls");
printf("Minkä laskusuorituksen haluaisit tehdä? (+,-,*,/)\n");
fflush(stdin);
scanf_s("%c", &valinta);
switch (valinta){
case '+':
printf("Anna yhteenlaskettavat luvut.\n>");
scanf_s("%f %f", &luku1, &luku2);
tulos = luku1 + luku2;
printf("Lukujen summa on %4.2f\n", tulos);
break;
case '-':
printf("Anna vähennettävät luvut.\n>");
scanf_s("%f %f", &luku1, &luku2);
tulos = luku1 - luku2;
printf("Lukujen summa on %4.2f\n", tulos);
break;
case '*':
printf("Anna kerrottavat luvut.\n>");
scanf_s("%f %f", &luku1, &luku2);
tulos = luku1 * luku2;
printf("Lukujen tulo on %4.2f\n", tulos);
break;
case '/':
printf("Anna jaettavat luvut.\n>");
scanf_s("%f %f", &luku1, &luku2);
if (luku2 == 0)
{
printf("Nollalla ei voida jakaa.\n");
system("pause");
main();
}
else
{
tulos = luku1 / luku2;
printf("Lukujen jako on %4.2f\n", tulos);
}
break;
default:
printf("En tunnistanut laskutoimitusta, yritä uudelleen.\n");
system("pause");
main();
break;
}
}
scanf()
[и избегайте нестандартных функций, таких как scanf_s()] - person wildplasser   schedule 14.09.2014scanf
, пожалуйста, и это сработает. - person Igor   schedule 14.09.2014scanf_s(" %c", &valinta);
, потому что иногда буфер заполнен, и fflush(stdin) не поможет. - person Igor   schedule 14.09.2014#define _CRT_SECURE_NO_WARNINGS
или вообще не используйтеscanf
, вместо этого используйтеgetchar
/fgets
/... иsscanf
/strtol
/.... Насколько я знаю,scanf_s
нужен дополнительный аргумент размера для конверсийc
,s
и[
. - person mafso   schedule 14.09.2014scanf_s
. Раньше это был нестандартный и неуклюжий интерфейс, предоставляемый только Microsoft с их компилятором, а теперь это столь же неуклюжий интерфейс, спрятанный в необязательном приложении к стандарту, и, насколько мне известно, до сих пор не поддерживается нигде, кроме MSVC. - person R.. GitHub STOP HELPING ICE   schedule 14.09.2014