我正在尝试编写一个程序,该程序涉及将字符作为菜单系统的一部分进行比较,以便对电阻代码进行解码。在菜单的末尾,它会询问您是否要解码另一个电阻,如果用户选择“是”则重复该程序。
这是我到目前为止的代码:
//used for repeating input menu
int menu = 0;
char menuChoice = 0;
//rest of program goes here
printf("Do you want to decode another resistor? (y/n)");
scanf("%c", &menuChoice);
while(menuChoice != "y" && menuChoice != "Y" && menuChoice != "n" && menuChoice != "N")
{
if(menuChoice != "Y" && menuChoice != "y")
{
if(menuChoice == "N" || menuChoice == "n")
{
menu = 0;
}
else
{
printf("Invalid choice.");
}
}
}
当我尝试使用GCC进行编译时,我最终会收到一条警告,上面写着“指针和整数之间的比较”。由于scanf只接受指针,我不知道如何将扫描的char与“Y”或“n”进行比较。这里有什么我想念的吗?
答案 0 :(得分:2)
您正在使用字符串文字语法"a"
而不是字面文字'a'
答案 1 :(得分:0)
调整您的比较。目前,他们将整数(或char
,如menuChoice)与数组(例如“y”)进行比较。
// menuChoice != "y"
menuChoice != 'y'
可能应删除while(menuChoice != "y") && ...)
。
if(menuChoice == "N" ...
应为else if(menuChoice == "N" ...)
。