如何解决程序似乎跳过了getchar
所以我是C语言编码和一般编码的新手。我正在学习一本书,其中的代码无法正常工作,我也不知道为什么。这可能是一件微不足道的事情,但正如我说的那样。我是一个流血的菜鸟。无论如何,这是代码:
#include <stdio.h>
void main()
{
char a,b;
printf("Welches Zeichen ist groesser?");
printf("\nGeben Sie ein Zeichen ein:");
a = getchar();
printf("Nun ein anderes Zeichen:");
fflush(stdin);
b = getchar();
if( a > b)
{
printf("'%c' ist groesser als '%c'!\n",a,b);
}
else if( b > a)
{
printf("\n'%c' ist groesser als '%c'!\n",b,a);
}
else
{
printf("\nBitte nicht zweimal das gleiche Zeichen eingeben!");
}
}
我没有收到任何编译器错误消息,似乎只是“跳过”第二个getchar并直接进入最后一个printf。我觉得这与fflush(stdin)有关。是否在代码中都没有关系。我已经尝试过fflush(stdout),但结果相同。有人可以告诉我为什么,请不要太苛刻。 预先感谢!
解决方法
fflush()之前指出的仅用于输出流,而不用于输入。
要读取不同的行,fgets()可能对您很有吸引力。不需要fflush()。
如果您可以掌握早期C标准的ANSI最终草案,则可以分为两部分,即规范和“合理性”,以说明做出某些选择的原因。过去,这确实帮助我学习了C。现在,我下载并保存了ISO最终草案以查看C的当前位置。
7.21.5.2 fflush功能
简介
#include
说明 如果流指向未输入最新操作的输出流或更新流,则fflush函数会使该流的所有未写入数据都被传递到主机环境中,并写入文件中;否则,行为是不确定的。
如果stream是一个空指针,则fflush函数会对上面定义了行为的所有流执行此刷新动作
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。