簡體   English   中英

代碼“應該”起作用,但是程序停止起作用

[英]The code “should” work, but the program stops working

我是一個有幾個小時經驗的初學者,我正在嘗試制作一個非常簡單的程序來熟悉IF命令。 我想出了以下代碼:

#include<stdio.h>

int main()
{
    char ans;
    char n;
    char y;
    printf("Do you want to exit?\n");
    scanf("%c\n",ans);
    if (ans == y)
    {
        printf("As you wish!\n");
        return 0;
    }
    else (ans == n);
    {
        printf("You'll exit anyways!\n");
        return 0;
    }
}

我認為應該可以,但是在輸入內容后,程序將停止工作! 提前致謝!

if (ans == y)

應該讀

if (ans == 'y')

前者將ans與未初始化變量y的值進行比較,而后者則檢查ans是否包含字符'y'

'n'

yn變量是不必要的,可以刪除。

此外,以下行是不正確的:

else (ans == n);

它應該讀

else if (ans == 'n')

(我添加了if並刪除了分號。)

最后, scanf()應該顯示為:

scanf("%c",&ans);
else (ans == n);

這不會產生預期的結果。 刪除; 和條件。 else可能只需要一段代碼。 它不處理條件。 如果需要條件,請else if以下情況下使用else if

else if (ans == 'n')

更多錯誤:

if (ans == y)

此處的y表示已聲明但沒有值的變量。 當然,您想引用字符'y'

if (ans == 'y')

此外, scanf需要一個指針,所以不是ans ,使用&ans 它需要寫入該值的內存地址。 它不在乎價值。 您最終將了解指針。 (假設您在過去的幾個小時中沒有對它們進行檢查)

有三個主要錯誤。

  • 您應該將指針傳遞給scanf函數,因此必須在ans&ans )之前添加一個&符號。

  • 有一條尾隨; else語句的末尾。

  • y表示變量(不存在),而您想將ans字符 'y'進行比較。

暫無
暫無

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

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