Итак, у нас есть поток данных stdin.Это ввод, который вы пишете на терминале.
Когда вы звоните scanf
, он читает только десятичное число, которое вы написали.Он не читает символ новой строки после него.Следовательно, вам нужно два вызова на gets
, потому что первый вызов видит только '\n'
, а второй видит ваши фактические данные.
Чтобы это исправить, я рекомендую вам использовать get для чтения полной строкикогда вы получите операцию, а затем используйте sscanf, чтобы получить операцию.
Например:
printMenu();
gets(str)
sscanf(str, "%d", &operation);
switch (operation) {