制作一个只执行三个有效命令的C程序

制作一个只执行三个有效命令的C程序,c,string,C,String,这些命令区分大小写。以下是命令: 加x,y;其中x和y是文字整数值,ADD是全部 大写字母。“添加”命令不显示结果,但 仅对x和y的任何值执行加法。 操作的结果保存在一个名为 斧头 PRT AX-显示AX的值 退出–退出程序 程序应继续向用户询问有效命令,直到用户键入退出 来自用户的有效输入示例: 加3,5 加4,3 PRT AX 出口 来自用户的无效输入示例: 加3,4 加上x,4 加上x,y 显示斧头 PRT ax PRT y PRT 4 出口 我已经试过做了,但不幸的是只做了ADD

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

  • 加x,y;其中x和y是文字整数值,ADD是全部 大写字母。“添加”命令不显示结果,但 仅对x和y的任何值执行加法。 操作的结果保存在一个名为 斧头
  • PRT AX-显示AX的值
  • 退出–退出程序
  • 程序应继续向用户询问有效命令,直到用户键入退出

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

    • 加3,5
    • 加4,3
    • PRT AX
    • 出口
    来自用户的无效输入示例:

    • 加3,4
    • 加上x,4
    • 加上x,y
    • 显示斧头
    • 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);
           }
    
    }
    
    #包括
    #包括
    #包括
    char-str[20];
    char cmd[10],x[10],y[10],zip[32],set[32];
    int AX,i,j;
    内部主(空){
    while(str!=“退出”){
    scanf(“%[^\n]%*c”,str);
    如果(str!=“PRT”){
    计算();
    }
    }
    返回0;
    }
    整数相加(整数x,整数y){
    返回x+y;
    }
    int calc(){
    strcpy(cmd,strtok(str,”);
    strcpy(x,strtok(NULL,“,”);
    strcpy(y,strtok(NULL,“,”);
    i=atoi(x);
    j=原子(y);
    如果((strcmp(cmd,“ADD”)==0)和&(strcmp(cmd,“ADD”)<0)){
    AX=加(i,j);
    }
    归还斧头;
    }
    //我不知道我用这个做了什么,也不知道我用这个做了什么
    作废打印(){
    strcpy(cmd,strtok(str,”);
    strcpy(zip,strtok(NULL)(“”);
    如果(strcmp(cmd,“PRT”)==0&&strcmp(zip,“AX”)==0){
    printf(“%d\n”,AX);
    }
    }
    
    让em猜一猜-您没有看到任何输出

    strcpy(zip, strtok(NULL, " "));
    
    if (strcmp (cmd, "PRT") == 0 && strcmp (zip, "AX") == 0) {
        printf("%d\n", AX);
       }
    
    你想用
    zip
    实现什么?你把它分配给一个空字符串,然后只打印AX,如果它等于zip,它永远不会是

    请注意,您应该更好地用括号括起来(阅读运算符优先级),因此

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

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

    你不能在C语言中使用
    !=
    来比较字符串。请仔细阅读
    strcmp()
    ,并了解一般字符串。或者更确切地说,你不能简单地猜测C语言语法,你必须知道它。
    str!=“EXIT”
    没有意义,也不会编译。请发布实际编译的真实代码。
    scanf(%[^\n]]*C),str;
    将开始一个无限循环,只需输入
    “\n”
    即可。建议
    fgets()
    void print() {
            printf("%d\n", AX);
    }