Я хочу написать caculator, который ждет, чтобы пользователь отдал ему заказы.
, например:
добавить 1 2
к югу от 12 4
Что такое лучший способ узнать, в каком порядке пользователь дал и маркер (s) дается после этого порядка?
Я пишу свой проект в C на Windows и на консольном компьютере.Лучший способ определить, какой заказ был подан моей заявке?
1
A
ответ
3
Вы можете использовать scanf
#include <stdio.h>
int main()
{
char cmd[1024];
int a, b;
printf ("Enter input: ");
scanf ("%s %d %d",cmd, &a, &b);
if(strcmp(cmd,"add")==0) {
printf ("Result: %d\n", a + b);
} else if(strcmp(cmd,"sub")==0) {
printf ("Result: %d", a - b);
} else {
printf ("Unrecognized command: '%s'\n", cmd);
}
}
Вы должны смотреть на lex and yacc, если вы планируете построить сложный.
2
Прочитайте строки со стандартного ввода. fgets
может быть полезна.
Разбор каждой строки. strtok_r
может помочь здесь (я всегда предпочитаю его за strtok
, что вызывает неприятные ошибки, когда все усложняется).
Сравните первый токен с каждой командой в списке известных команд.
Сделайте то, что нужно сделать.
Вы пытаетесь сделать интерактивный настольный калькулятор, такой как 'bc' или' dc'? Или вы хотите сделать команду, которая будет выполнять один расчет, а затем выйти? – sarnold
@sarnold Принять заказ и распечатать результат! очень простой! Я хочу знать, есть ли какие-либо библиотеки или что-то, что я могу использовать для принятия заказа? –
Ну, это вопрос простого анализа содержимого 'argv' или написания аккуратного парсера с использованием flex и bison - простой анализ' argv' будет работать, если вы хотите снова и снова вызывать инструмент командной строки; более сложный подход flex и bison дает вам гораздо более мощный инструмент. – sarnold