2012-05-02 2 views
1

Я хочу написать caculator, который ждет, чтобы пользователь отдал ему заказы.
, например:
добавить 1 2
к югу от 12 4
Что такое лучший способ узнать, в каком порядке пользователь дал и маркер (s) дается после этого порядка?
Я пишу свой проект в C на Windows и на консольном компьютере.Лучший способ определить, какой заказ был подан моей заявке?

+1

Вы пытаетесь сделать интерактивный настольный калькулятор, такой как 'bc' или' dc'? Или вы хотите сделать команду, которая будет выполнять один расчет, а затем выйти? – sarnold

+0

@sarnold Принять заказ и распечатать результат! очень простой! Я хочу знать, есть ли какие-либо библиотеки или что-то, что я могу использовать для принятия заказа? –

+0

Ну, это вопрос простого анализа содержимого 'argv' или написания аккуратного парсера с использованием flex и bison - простой анализ' argv' будет работать, если вы хотите снова и снова вызывать инструмент командной строки; более сложный подход flex и bison дает вам гораздо более мощный инструмент. – sarnold

ответ

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, что вызывает неприятные ошибки, когда все усложняется).
Сравните первый токен с каждой командой в списке известных команд.
Сделайте то, что нужно сделать.