繁体   English   中英

C“菜单指针和整数之间的比较”警告

[英]C “comparison between pointer and integer” warning for menu

我正在尝试编写一个程序,该程序涉及将字符作为菜单系统的一部分进行比较,以便对电阻器代码进行解码。 在菜单的最后,它会询问您是否要解码另一个电阻,如果用户选择“是”则重复该程序。

这是我到目前为止的代码:

  //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”进行比较。 这里有什么我想念的吗?

您使用字符串文字语法"a"而不是char文字语法'a'

更多关于差异的信息

调整您的比较。 目前,他们将整数(或char (如menuChoice))与数组(例如“y”)进行比较。

// menuChoice != "y"
menuChoice != 'y'

可能应删除while(menuChoice != "y") && ...)

if(menuChoice == "N" ... else if(menuChoice == "N" ...)则应为else if(menuChoice == "N" ...)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM