簡體   English   中英

IF語句無法正常工作

[英]IF statement doesn't work properly

我決定制作一個播放井字游戲的程序,但是我失敗了,如果使用if語句,它將使用我放在其他位置的任何內容。 我一直盯着它看了兩個小時,但我什么都沒發現! 這是代碼:

#include <stdio.h>
#include <process.h>

int main()
{
char ans,ans2;
double a,b,c,d,e,f;
printf("Do you want to play? (y/n)\n"); //must make a loop
scanf ("%c",&ans);
if (ans == 'y')
{
    printf("Do you want to be first?\n");
    scanf ("%c",&ans2);
    if (ans2 == 'y')
    {
        printf("Make your choice.\n");
        printf(" 1 2 3\n");
        printf("a | | \n");
        printf(" - - -\n");
        printf("b | | \n");
        printf(" - - -\n");
        printf("c | | \n");
    }
    else if (ans2 == 'n')
    {
        printf("option under construction!\n"); //must write this situation
    }
    else
        printf("Invalid choice!\n");
}
else if (ans == 'n')
{
    printf("Goodbye!\n");
    system("pause");
}
else
    printf("Invalid choice!\n");

}

請注意,該程序尚未完成(顯然)。

PS我昨天開始編程。

我想問題是,當您使用scanf讀取字符時,它會讀取該字符,但是您還要輸入換行符。 然后,下一個scanf調用將讀取該換行符,而不是預期的字符。

最簡單的解決方案是告訴scanf跳過空格(例如換行符):

scanf(" %c", &ans);

注意%c之前的空格。

正如勒夫所說,問題是scanf especailythe第二個。 恕我直言,它讀取的是新行,而不是空格。

無論如何,我的標准選擇是在scanf ("%c",&ans2)之前加上fflush(stdin) scanf ("%c",&ans2)

順便說一句:對每個if和else語句使用花括號。 它減少了在某處亂換新行后的愚蠢錯誤,並提高了此處的可讀性。 我的第一個猜測是嵌套括號和大小寫錯誤。

編輯當我在評論教訓: 不要使用fflush(stdin) 它可能可行,但只是偶然,因為stdin上的fflush()在ANSI-C中具有未定義的行為!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM