我的程序基本上是当用户输入一个无法识别的命令时,它假设显示错误信息,但是当用户输入有效命令和无效命令时,它仍会显示错误信息。
int main(){
char command[20];
printf("Enter either add, sub, mult, div, or EXIT:\n");
scanf("%5s", command);
if(strcmp(command, "EXIT") || strcmp(command, "add" ) ||strcmp(command, "sub")|| strcmp(command,"div") || strcmp(command,"mult") != 0){
printf("Warning either enter the following commands\n");
}
else
{
printf("Welcome\n");
//function..
}
return 0;
}
我也是C的新手,我正在试验我不确定这是否是实现此功能的正确方法。
答案 0 :(得分:4)
通过做:
if (strcmp || strcmp || strcmp || strcmp != 0)
您似乎试图同时检查所有不同的结果,而不是0。
这不是C的工作方式。
您必须单独检查每个值
if (strcmp(command, "EXIT") &&
strcmp(command, "add" ) &&
strcmp(command, "sub" ) &&
strcmp(command, "div" ) &&
strcmp(command, "mult"))
{ /* Show Warning message */ }
<强>翻译强>
如果字符串 不是 "EXIT"
且不是"add"
,也不是"sub"
....那么字符串不是任何已知的命令;因此,请出示警告。
答案 1 :(得分:0)
如果两个字符串匹配,strcmp
函数将返回0
。因此,您的条件将始终评估为true
,因为只有一个字符串可以与某个输入匹配。