Изучаю Си, помогите решить проблему
Вот мой код:
#include <stdio.h>
#include <Windows.h>
int main(){
int a, b, c;
printf("Enter 1 value:");
scanf("%d", &a);
printf("\nEnter 2 value:");
scanf("%d", &b);
printf("\nEnter action you want to do with entered values[+,-,/,*]");
scanf("%d", &c);
switch(c) {
case '+':
printf("%d", a+b);
break;
case '-':
printf("%d", a-b);
break;
case '*':
printf("%d", a * b);
break;
case '/':
printf("%d", a/b);
break;
default:
printf("\nEntered operator is not valid");
return main();
}
system("PAUSE");
return 0;
}
\n
из входного потока.scanf()
писали достаточно прагматичные люди, он (кроме формата %c) пропускает пробелы, табуляции, ньюлайны и т.п. Вот при ошибке форматного ввода он оставляет символ, на котором преобразование "сломалось" в потоке. И этот символ надо убирать. На практике надежней всего просто прочесть поток до конца строки (включительно).c
(нужно char, а не int с заменой %d на %c) ему уже @brightside90 написал. Но это будет работать только для ввода операции без пробелов между ней и вторым операндом. -- А что Вы имели в виду, когда написали, что в С++ не так? cin >> ? -- Вообще-то, если не заморачиваться с проверками, то ввод операции (в формате ТС) можно написать так char c, strop[10]; scanf ("%s", strop); c = strop[0];