为什么我的程序不会识别另一个命令?

时间:2012-10-13 20:36:33

标签: c

我目前正在编写程序的主要功能(到目前为止的裸机功能)到目前为止我只包含了“end”命令来结束程序。每当输入的任何其他内容不是命令时,它将输出错误消息。但是,现在我在循环中输入了更多命令,它似乎没有识别出其他任何东西。我正在编写一个程序,在提示用户输入系数和指数后创建多项式。

命令是adc(添加系数命令),在空格之后你应该添加一个代表系数的整数,另一个空格代表指数的另一个整数。

示例:adc 4 5 输出:4x ^ 5

int main(void){
    char buf[5]; //Creates string array
    unsigned int choice;
    printf("Command? "); // Prompts user for command
    fflush(stdout);
    gets(buf); //Scans the input

    while(strncmp(buf, "end", 3) != 0) //Loop that goes through each case, so long as the command isn't "end".
    {
        switch( choice ){
        //Where the other cases will inevitably go
            if((strcmp(buf,"adc %d %d"))== 0){
            }
        break;
            default:
              printf("I'm sorry, but that's not a command.\n"); //Prints error message if input is not recognized command
    fflush(stdout);
              break;
        }
        printf("Command? "); //Recycles user prompt
        fflush(stdout);
        gets(buf);
    }
    puts("End of Program."); //Message displayed when program ends
}

1 个答案:

答案 0 :(得分:1)

您不能使用这样的格式字符串:strcmp(buf,"adc %d %d")来测试某种输入。如果使用字面输入,strcmp只会发出字符串相等信号:"adc %d %d" adc后跟两个整数。

您需要手动解析输入字符串,通过对空格字符进行标记,并使用strcmp检查第一个标记,例如adc,然后分别解析数字。

我在case中没有发现任何switch个陈述。看起来您可以删除switch,因为您没有在任何地方使用choice

此外,请勿使用gets,而是使用fgets