2010-12-30 2 views
2

Я пытаюсь написать простую программу, которая имитирует калькулятор. Я хотел бы, чтобы программа выходила или выключалась, когда Ctrl + D нажатие клавиши сделано. Я искал через StackOverflow и увидел другие примеры Ctrl + C или Ctrl + но примеры в Java и C.Как завершить программу с помощью Ctrl-D?

для C:

(scanf("%lf", &var); 

для Java, a SIGINT поднят, когда Ctrl + Z нажат.

signal(SIGINT,leave); 
    for(;;) getchar(); 

Мне интересно, что я могу сделать для Ctrl + D в C++ ...

Спасибо всем!

+0

Действительно нужна дополнительная информация об этом, например, в какой среде вы работаете. Различные оболочки и виджеты GUI будут interecpt специальных управляющих символов, подобных этому в своих целях, и могут иметь или не иметь способов отключить это. –

ответ

4

Ctrl + D заставит STDIN дескриптора файла для возврата окончания срока файла. Любая функция чтения ввода будет отражать это, и вы можете выйти из программы, когда достигнете конца файла. Кстати, пример C должен работать дословно на C++, хотя это, возможно, не самый идиоматический C++.

Это домашнее задание, кстати? Если это так, обязательно отметьте его как таковой.

+0

О, это очень интересно! Я попробую. Благодаря! Это часть лаборатории, и я просто не могу заставить Ctrl-D работать, и я расстроился.Когда вещи кажутся беспомощными, я решил спросить всех, кто знает замечательный StackOverflow. Спасибо, будет! – Ken

0

Ctrl + D на Unixy платформах EOF. Если вы получаете каждый символ, вы можете проверить, есть ли у вас EOF.

0

В Unix, терминал будет интерпретировать Ctrl + D (на пустой линии) в конце ввода; далее от stdin будет возвращен EOF, который вы можете посмотреть.

+0

Имейте в виду первые два слова: * Под Unix *. Существуют и другие платформы, которые могут (и, вероятно,) отличаться при запуске конца ввода. –

0

Вы можете сделать жизнь проще и искать ключевое слово, например «выйти» или «выйти». В прошлый раз, когда я использовал калькулятор, эти слова не были на клавиатуре.

Многие простые программы калькуляторов читают ввод как текст, завершаемый newline. Они анализируют текст в памяти, а затем выдают ответ.

Другие более сложные программы калькуляторов используют окна и управляются событиями. Некоторые используют кнопку типа «=», чтобы сигнализировать о конце ввода и начале вычисления (не работает на калькуляторах RPN).

Эти методы устраняют сложность определения ввода «Конец текста» с использованием последовательности символов управления и более переносимы.