C中的参数和错误检查

时间:2017-09-19 02:13:25

标签: c

首先,我会解释说我是C的新手。我从未在一周前碰过它,但是我精通Java。我正在进行这项任务,用户将在一行中输入命令和必要的参数。

要求如下:必须正确输入命令(add,sub,mul,div,col)。必须存在与命令匹配的参数(即,add需要两个参数,但col只需要一个参数)。在命令之后输入任何内容,并从缓冲区中清除参数。

一个例子是用户将输入“add 13 12”并且总和将被打印在屏幕上。我正在努力解决的问题是数据格式错误。我需要确保用户输入“add 13 12”而不仅仅是“添加13”或“添加”。

目前,我的代码如下:

int exit = 0;
do {
    //Error checking will be done here
    char command[3];
    int a, b;

    //Input Stream
    printf("Command: ");
    scanf("%s", command);


    if(strcmp(command, "add") == 0) {
        scanf("%d ", &a);
        if (!feof(stdin)) {
            scanf("%d", &b);
            Add(a, b);
        } else {
            printf("Requires second parameter\r\n");
        }

    } else if (strcmp(command, "sub") == 0) {
        scanf("%d %d", &a, &b);
        if(a > b) {
            Subtract(a, b);
        } else {
            printf("The first integer must be greater than the second integer\r\n");
        }
    } else if (strcmp(command, "mul") == 0) {
        scanf("%d %d", &a, &b);
        Multiply(a, b);
    } else if (strcmp(command, "div") == 0) {
        scanf("%d %d", &a, &b);
        if(b > 0 && (a > b)) {
            Divide(a, b);
        } else {
            printf("The denominator must not be 0 or greater than the numerator\r\n");
        }
    } else if (strcmp(command, "col") == 0) {
        scanf("%d", &a);
        if (a > 0) {
            Collatz(a);
        } else {
            printf("Integer must be one or greater\r\n");
        }
    } else if (strcmp(command, "bye") == 0) {
        printf("bye");
        exit = 1;
    } else {
        printf("Incorrect command, please enter add, sub, mul, div, col, or bye.\r\n");
    }
} while(exit == 0);
return (EXIT_SUCCESS);

0 个答案:

没有答案