簡體   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