[英]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.