0

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

该命令是 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
}
4

1 回答 1

1

您不能使用这样的格式字符串:strcmp(buf,"adc %d %d")测试某种输入。如果使用字面输入: ,您strcmp将仅表示字符串相等,而不是后跟两个整数。"adc %d %d" adc

您需要手动解析输入字符串,方法是在空格字符周围进行标记,使用strcmpeg检查第一个标记adc,然后分别解析数字。

我没有注意到case您的switch. 看起来您可以删除switch,因为您没有choice在任何地方使用。

另外,不要使用getsfgets而是使用。

于 2012-10-13T20:39:31.347 回答