代码“应该”工作,但程序停止工作
我是一个初学者,几个小时的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!提前致谢!
else (ans == n);
这不会给预期的结果。删除;
和条件。 else
可能只需要一段代码。它不处理条件。 如果你想的条件下,使用else if
:
else if (ans == 'n')
多个错误:
if (ans == y)
的Y这里指的是变量,该变量声明,但没有价值。当然,你需要参考字符'y'
:
if (ans == 'y')
此外,scanf
预期的指针,所以不是ans
,使用&ans
。 它需要写入该值的内存地址。它并不关心价值。 您将最终了解指针。 (假设你在几个小时的经验中没有超过他们)
的
if (ans == y)
应该读
if (ans == 'y')
前者比较ans
到未初始化的变量y
的值,而后者则检查是否ans
包含字符'y'
。
'n'
也是如此。
y
和n
变量是不必要的,可以删除。
此外,下面的行不正确:
else (ans == n);
它应该阅读
else if (ans == 'n')
最后,(我已经添加了if
和已删除了分号。) scanf()
应改为:
scanf("%c",&ans);
'else(ans =='n ');'在语法上是有效的;它只是解析不同于OP想要的结果 – 2013-03-23 14:08:57
@R ..需要采取的点 – NPE 2013-03-23 14:10:18
有三个主要错误。
你应该通过指针到
scanf
功能,让你拥有前ans
(&ans
)添加一个符号。在
else
声明末尾有一个尾随;
。y
指变量(不存在),而要比较ans
对字符'y'
。
'n'和'y'永远不会设置为实际值 - 如果您想将它们与'ans'进行比较,您会需要做一些像'char n ='n';' – Hannele 2013-03-23 13:56:15
'如果'不是一个命令,这是一个声明。 C没有“命令”。 – 2013-03-23 13:56:33
'scanf(“%c \ n”,&ans);' – wildplasser 2013-03-23 13:56:58