我目前正在编写程序的主要功能(到目前为止的裸机功能)到目前为止我只包含了“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
}
答案 0 :(得分:1)
您不能使用这样的格式字符串:strcmp(buf,"adc %d %d")
来测试某种输入。如果使用字面输入,strcmp
只会发出字符串相等信号:"adc %d %d"
,不 adc
后跟两个整数。
您需要手动解析输入字符串,通过对空格字符进行标记,并使用strcmp
检查第一个标记,例如adc
,然后分别解析数字。
我在case
中没有发现任何switch
个陈述。看起来您可以删除switch
,因为您没有在任何地方使用choice
。
此外,请勿使用gets
,而是使用fgets
。