创建一个只执行三个有效命令的C程序

时间:2014-11-27 09:58:36

标签: c string

命令区分大小写。以下是命令:

  1. ADD x,y;其中x和y是文字整数值,ADD是全部 大写字母。 ADD命令不显示结果 仅对x和y的任何值执行加法。 操作的结果保存在一个名为的特殊变量上 AX。
  2. PRT AX - 显示AX的值。
  3. 退出 - 退出程序。
  4. 您的程序应继续询问用户的有效命令,直到用户键入EXIT。

    来自用户的有效输入示例:

    • ADD 3,5
    • ADD 4,3
    • PRT AX
    • EXIT

    来自用户的无效输入示例:

    • 添加3,4
    • ADD x,4
    • ADD x,y
    • DISPLAY AX
    • PRT ax
    • PRT y
    • PRT 4
    • 退出

    我已经尝试过制作,但不幸的是只做了ADD命令。似乎无法获得PRT AX命令。请帮帮我:(这是我的代码

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    char str[20];
    char cmd[10], x[10], y[10], zip[32], set[32];
    int AX, i, j;
    
    int main (void) {
    
        while (str != 'EXIT') {
            scanf ("%[^\n]%*c", str);
    
    
            if (str != 'PRT') {
                calc();
            }
    
        }
    
    return 0;
    }
    
    int add(int x, int y){
        return x + y;
    }
    
    int calc() {
        strcpy(cmd, strtok(str , " "));
        strcpy(x, strtok(NULL, ","));
        strcpy(y , strtok(NULL, ","));
    
        i = atoi(x);
        j = atoi(y);
    
        if ((strcmp (cmd, "ADD") == 0) && (strcmp (cmd, "add") < 0)) {
            AX = add(i,j);
           }
    
        return AX;
    }
    
    // i dont know what i did with this or what i did it for T.T 
    void print() {
        strcpy(cmd, strtok(str , " "));
        strcpy(zip, strtok(NULL, " "));
    
        if (strcmp (cmd, "PRT") == 0 && strcmp (zip, "AX") == 0) {
            printf("%d\n", AX);
           }
    
    }
    

1 个答案:

答案 0 :(得分:0)

让我猜猜 - 你没有看到输出?

strcpy(zip, strtok(NULL, " "));

if (strcmp (cmd, "PRT") == 0 && strcmp (zip, "AX") == 0) {
    printf("%d\n", AX);
   }

你想用zip做什么?您将它分配给一个空字符串,然后只打印AX,如果它等于zip,它将永远不会。

请注意,您应该更好地加入括号(读取运算符优先级),所以

strcpy(zip, strtok(NULL, " "));

if ((strcmp (cmd, "PRT") == 0) && (strcmp (zip, "AX") == 0)) {
    printf("%d\n", AX);
   }

但是,真的,你只需要忘记zip和

void print() {
        printf("%d\n", AX);
}