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

时间:2013-03-23 13:54:17

标签: 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;
    }
}

我认为它应该可行,但在我输入内容后程序停止工作!提前谢谢!

3 个答案:

答案 0 :(得分:9)

if (ans == y)

应该阅读

if (ans == 'y')

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

'n'同样如此。

yn变量是不必要的,可以删除。

此外,以下行不正确:

else (ans == n);

应该阅读

else if (ans == 'n')

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

最后,scanf()应为:

scanf("%c",&ans);

答案 1 :(得分:3)

else (ans == n);

这不会给出预期的结果。删除;和条件。 else可能只会占用大量代码。它不处理条件。 如果您需要条件,请使用else if

else if (ans == 'n')

更多错误:

if (ans == y)

y在这里指的是变量,它被声明但没有值。当然你想要引用角色'y'

if (ans == 'y')

此外,scanf需要一个指针,因此使用ans代替&ans。 它需要写入值的内存地址。它并不关心价值。 你最终会了解指针。 (假设你在几小时的经验中没有完成它们)

答案 2 :(得分:2)

有三个主要错误。

  • 您应该将指针传递给scanf函数,因此您必须在ans&ans)之前添加&符号。

  • ;声明的末尾有else个结尾。

  • y指的是一个变量(不存在),而您希望将ans字符进行比较 'y'