2013-03-23 88 views
0

我是一个初学者,几个小时的expirience,我试图做一个非常简单的程序来熟悉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; 
    } 
} 

,我认为它应该工作,但在我键入一些程序停止workig!提前致谢!

+0

'n'和'y'永远不会设置为实际值 - 如果您想将它们与'ans'进行比较,您会需要做一些像'char n ='n';' – Hannele 2013-03-23 13:56:15

+0

'如果'不是一个命令,这是一个声明。 C没有“命令”。 – 2013-03-23 13:56:33

+0

'scanf(“%c \ n”,&ans);' – wildplasser 2013-03-23 13:56:58

回答

3
else (ans == n); 

这不会给预期的结果。删除;和条件。 else可能只需要一段代码。它不处理条件。 如果你想的条件下,使用else if

else if (ans == 'n') 

多个错误:

if (ans == y) 

的Y这里指的是变量,该变量声明,但没有价值。当然,你需要参考字符'y'

if (ans == 'y') 

此外,scanf预期的指针,所以不是ans,使用&ans。 它需要写入该值的内存地址。它并不关心价值。 您将最终了解指针。 (假设你在几个小时的经验中没有超过他们)

+0

“This does not compile。” - >为什么 – md5 2013-03-23 13:58:04

+0

else期望body:v – 2013-03-23 13:58:56

+0

@ Magtheridon96: ;'是一个有效的陈述,这不是OP要写的东西,但它是*正确的C *。 – md5 2013-03-23 13:59:53

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); 
+0

'else(ans =='n ');'在语法上是有效的;它只是解析不同于OP想要的结果 – 2013-03-23 14:08:57

+0

@R ..需要采取的点 – NPE 2013-03-23 14:10:18

2

有三个主要错误。

  • 你应该通过指针scanf功能,让你拥有前ans&ans)添加一个符号。

  • else声明末尾有一个尾随;

  • y指变量(不存在),而要比较ans字符'y'