代码"应该"有效,但程序停止工作

Hri*_*nov 0 c if-statement

我是一个有几个小时的经验的初学者,我正在尝试制作一个非常简单的程序来熟悉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;
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为它应该工作,但在我输入一些东西后,程序停止工作!提前致谢!

NPE*_*NPE 9

if (ans == y)
Run Code Online (Sandbox Code Playgroud)

应该读

if (ans == 'y')
Run Code Online (Sandbox Code Playgroud)

前者与ans未初始化变量的值进行比较y,而后者则检查是否ans包含该字符'y'.

同样的道理'n'.

yn变量是不必要的,并且可以被移除.

此外,以下行不正确:

else (ans == n);
Run Code Online (Sandbox Code Playgroud)

它应该读

else if (ans == 'n')
Run Code Online (Sandbox Code Playgroud)

(我添加了if并删除了分号.)

最后,scanf()应阅读:

scanf("%c",&ans);
Run Code Online (Sandbox Code Playgroud)