刷新不起作用

2023-11-25

Why fflush(..)不起作用c2 and c0?
如果我使用声明c0 = 0 and c2 = 0它有效,但是fflush(stdin)不起作用,我尝试放在不同的地方,但它不起作用,我在 ubuntu 13.04 中使用代码块;

int main(void)
{
    int cod ,passou = 0, c0, c1, c2, c3, ct;
    float p1, p2, p3;
    char o;

    do {
    puts  ("Informe codigo: ");
    scanf ("%i", &cod);
    fflush (stdin);
        switch (cod)
        {
            case 0:
                c0 = c0 + 1;
                break;

            case 1:
                c1 = c1 + 1;
                ct = ct + 1;
                break;

            case 2:
                c2 = c2 + 1;
                ct = ct + 1;
                break;

            case 3:
                c3 = c3 + 1;
                ct = ct + 1;
                break;

            default:
                puts ("Valor invalido");

        }
        getchar();
        puts ("Deseja informar mais um voto?");
        fflush (stdin);
        scanf("%c",&o);
        if (o == 'S' || o == 's' ) {
        passou = 0;
        } else if (o == 'N' || o == 'n' ) {
        passou = 1;
        } else {
        puts ("Opcao invalida");
        }
        } while ( passou != 1 );


        p1=(c1/ct)*100;
        p2=(c2/ct)*100;
        p3=(c3/ct)*100;
        if (c1 > c2 && c1 > c3 && c1 > c0 ) {
        puts ("Candidato numero 1 eh o vencedor");
        } else if (c2 > c1 && c2 > c3 && c3 > c0) {
        puts ("Candidato numero 2 eh o vencedor");
        } else if (c3 > c1 && c3 > c2 && c3 > c0) {
        puts ("Candidato numero 3 eh o vencedor");
        } else {
        puts ("Numero de votos em branco eh maior do que todos os outros candidatos");
        }
        printf ("\nTotal de votos do candidato 1: %d", c1);
        printf ("\nTotal de votos do candidato 2: %d", c2);
        printf ("\nTotal de votos do candidato 3: %d", c3);
        printf ("\nTotal de votos em branco: %d", c0);
        printf ("\nPercentual de votos do candidato 1: %.2f", p1);
        printf ("\nPercentual de votos do candidato 2: %.2f", p2);
        printf ("\nPercentual de votos do candidato 3: %.2f", p3);

        return 1;
    }

在您的系统 ubuntu 13.04(Unix 或 Linux)上调用fflush (stdin);是未定义的行为!

int fflush(FILE *ostream);

ostream 指向输出流或更新流,其中 最近的操作没有输入,fflush函数会导致任何 该流的未写入数据将被传送到主机环境 写入文件;否则,行为是未定义的

要学习正确刷新输入缓冲区的技巧,您可以使用以下一些代码片段来实际读取并丢弃输入缓冲区中不需要的字符。您可以在读取实际数据之前将其用作 flush。阅读此常见问题解答条目。

for C:

 while ((ch = getchar()) != '\n' && ch != EOF);  

for C++:

 while ((ch = cin.get()) != '\n' && ch != EOF);

但是,如果在输入流中没有数据时调用这些方法,程序将等到有数据为止,这会给您带来不良结果。

Read: @基思·汤普森的回答:“C 库函数的替代方案fflush(stdin)"

Edit:
有一些平台fflush(stdin)已完全定义(作为该平台上的非标准扩展)。主要的例子是一个众所周知的系统系列,统称为 Windows。微软的规范:

刷新流

The int fflush(FILE *stream )函数刷新流。如果文件关联于 流已打开以供输出,fflush将内容写入该文件 与流关联的缓冲区。如果该流开放input, fflush清除缓冲区的内容。 fflush否定了 先前对 ungetc 的任何调用对流的影响。还,fflush(NULL)刷新所有为输出而打开的流。流在之后保持打开状态 的电话。 fflush 对无缓冲流没有影响。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

刷新不起作用 的相关文章

  • c和java语言中的换行符

    现在行分隔符取决于系统 但在 C 程序中我使用 n 作为行分隔符 无论我在 Windows 还是 Linux 中运行它都可以正常工作 为什么 在java中 我们必须使用 n 因为它与系统相关 那么为什么我们在c中使用 n 作为新行 而不管我
  • 如何读取扩展文件属性/文件元数据

    因此 我按照教程使用 ASP net core 将文件 上传 到本地路径 这是代码 public IActionResult About IList
  • C++ 中本地类中的静态成员变量?

    我知道我们不能宣布static本地类中的成员变量 但其原因尚不清楚 那么请问有人可以解释一下吗 另外 为什么我们不能访问非static函数内部定义的变量 内部已经定义了局部类 直接在局部类成员函数中 在下面给出的代码中 int main i
  • 向 Nhibernate 发出 SQL 查询

    如何将此 SQL 查询发送给 Nhibernate SELECT Customer name FROM Company INNER JOIN Customer ON Company CompanyId Customer CompanyId
  • 推导指南中的引用和值之间的差异

    考虑类型A template
  • 如何将 #ifdef DEBUG 添加到 Xcode?

    我的项目中有一些代码永远不应该在发布版本中使用 但在测试时很有用 我想做这样的事情 ifdef DEBUG Run my debugging only code endif 在 Xcode 4 中哪里添加 DEBUG 设置 我尝试将其放入
  • 如何从 .resx 文件条目获取注释

    资源文件中的字符串有名称 值和注释 The ResXResourceReader类让我可以访问名称和值 有办法看评论吗 你应该能够得到Comment via ResXDataNode class http msdn microsoft co
  • 将 System.Windows.Input.KeyEventArgs 键转换为 char

    我需要将事件参数作为char 但是当我尝试转换 Key 枚举时 我得到的字母和符号与传入的字母和符号完全不同 如何正确地将密钥转换为字符 这是我尝试过的 ObserveKeyStroke this new ObervableKeyStrok
  • C# Dns.GetHostEntry 不返回连接到 WiFi 的移动设备的名称

    我有一个 C 中的 Windows 窗体应用程序 我试图获取列表中所有客户端的主机名 下面给出的是 ra00l 来自此链接的代码示例 GetHostEntry 非常慢 https stackoverflow com questions 99
  • Rx 中是否有与 Task.ContinueWith 运算符等效的操作?

    Rx 中是否有与 Task ContinueWith 运算符等效的操作 我正在将 Rx 与 Silverlight 一起使用 我正在使用 FromAsyncPattern 方法进行两个 Web 服务调用 并且我想这样做同步地 var o1
  • 未经许可更改内存值

    我有一个二维数组 当我第一次打印数组的数据时 日期打印正确 但其他时候 array last i 的数据从 i 0 到 last 1 显然是一个逻辑错误 但我不明白原因 因为我复制并粘贴了 for 语句 那么 C 更改数据吗 I use g
  • Visual Studio 中的测试单独成功,但一组失败

    当我在 Visual Studio 中单独运行测试时 它们都顺利通过 然而 当我同时运行所有这些时 有些通过 有些失败 我尝试在每个测试方法之间暂停 1 秒 但没有成功 有任何想法吗 在此先感谢您的帮助 你们可能有一些共享数据 检查正在使用
  • 上下文敏感与歧义

    我对上下文敏感性和歧义如何相互影响感到困惑 我认为正确的是 歧义 歧义语法会导致使用左推导或右推导构建多个解析树 所有可能的语法都是二义性的语言是二义性语言 例如 C 是一种不明确的语言 因为 x y 总是可以表示两个不同的事物 如下所述
  • 将 log4net 与 Autofac 结合使用

    我正在尝试将 log4net 与 Autofac 一起使用 我粘贴了这段代码http autofac readthedocs org en latest examples log4net html http autofac readthed
  • HttpWebRequest 在第二次调用时超时

    为什么以下代码在第二次 及后续 运行时超时 代码挂在 using Stream objStream request GetResponse GetResponseStream 然后引发 WebException 表示请求已超时 我已经尝试过
  • 有没有办法强制显示工具提示?

    我有一个验证字段的方法 如果无法验证 该字段将被清除并标记为红色 我还希望在框上方弹出一个工具提示 并向用户显示该值无效的消息 有没有办法做到这一点 并且可以控制工具提示显示的时间 我怎样才能让它自己弹出而不是鼠标悬停时弹出 If the
  • 线程和 fork()。我该如何处理呢? [复制]

    这个问题在这里已经有答案了 可能的重复 多线程程序中的fork https stackoverflow com questions 1235516 fork in multi threaded program 如果我有一个使用 fork 的
  • 英特尔 Pin 与 C++14

    问题 我有一些关于在 C 14 或其他 C 版本中使用英特尔 Pin 的问题 使用较新版本从较旧的 C 编译代码很少会出现任何问题 但由于 Intel Pin 是操作指令级别的 如果我使用 C 11 或 C 14 编译它 是否会出现任何不良
  • 使用 GhostScript.NET 打印 PDF DPI 打印问题

    我在用GhostScript NET http ghostscriptnet codeplex com打印 PDF 当我以 96DPI 打印时 PDF 打印效果很好 但有点模糊 如果我尝试以 600DPI 打印文档 打印的页面会被极大地放大
  • 检查Windows控制台中是否按下了键[重复]

    这个问题在这里已经有答案了 可能的重复 C 控制台键盘事件 https stackoverflow com questions 2067893 c console keyboard events 我希望 Windows 控制台程序在按下某个

随机推荐

  • 从 IEnumerable 转换为列表 [重复]

    这个问题在这里已经有答案了 我想转换自IEnumerable
  • 如何设置 eclipse.ini -vm 选项?

    我安装了Maven插件Eclipse 然后我收到如下错误 请确保 eclipse ini 中的 vm 选项指向 JDK 我该如何使用 vm在 eclipse ini 中选择指向我的 JDK 我的解决方案是 vm D work Java jd
  • 使用 PHP 将 jpg 图像转换为 gif、png 和 bmp 格式

    如何使用 PHP 将单个 jpg 图像转换为 3 种不同的图像格式 gif png 和 bmp 您首先从文件中创建一个图像对象imagecreatefromjpeg 然后 您将该对象转储为不同的格式 使用图像gif 例如 imageObje
  • 使用 ng-repeat 进行 Angularjs 表排序

    我有一个 HTML 表格 想要对我的记录进行排序 scope records在 ctrl 中 通过单击表标题 scope headers在 ctrl 中 任何人都可以解释为什么它有效 th a headers 0 a th th a hea
  • git 预提交钩子代码格式化与部分提交?

    有没有办法有一个预提交钩子来自动格式化代码 对于 示例与astyle 但是确实not销毁部分提交 工作流程 edit a file txt git add p file txt add one chunk but not another g
  • 如何在 Swift 中获得 Bool 的相反值?

    我的具体情况是我正在尝试切换导航栏的隐藏和显示 let navHidden self navigationController navigationBarHidden self navigationController setNavigat
  • iOS - 如何发出 SOAP 请求并接收关注响应

    我知道网络上有很多关于 如何在 iOS 中使用 SOAP 的内容 但我仍然未能遵循 SOAP 请求和响应 非常感谢帮助 我用的是简单的NSURLConnection用于请求和响应 SOAP 请求 POST asmx HTTP 1 1 Hos
  • 服务器端语音识别[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 有人知道已经托管的任何好的服务器端语音识别引擎吗 IE 我希望能够调用一个简单的 Web API 来发布一些声音数据并获取文本 不一定是免费的 但希
  • 获取当前域名

    我的网站在服务器上http www myserver uk com 在此服务器上我有两个域 one com and two com 我想使用 PHP 获取当前域名 但是如果我使用 SERVER HTTP HOST 然后它向我展示 myser
  • 如何在 Rails 连接表迁移中正确索引字段?

    Rails 4 引入了生成连接表迁移的功能 bin rails generate migration CreateTeamsUsersJoinTable team user 这会产生以下文件 class CreateTeamsUsersJo
  • 使用 jQuery,如何仅查找可见元素并保留隐藏元素?

    所以我从第 1 4 项开始 div class someDiv bold italic style display none Lorem div div class someDiv regular italic style display
  • 如何对使用 perlcc 编译的 Perl 程序进行逆向工程?

    我继承了一个在 Unix 上有 编译 perl 脚本的环境 是否可以对其进行反编译 反向工程 无论术语是什么 并从编译后的目标代码中获取源代码 可能不可能 但我想我会问而不是假设 谢谢 凯文 省略已经介绍过的字节码后端 tchrist 只讨
  • CakePHP 2个单独的登录表

    我有一个 Cake 网站 它需要有两个单独的登录名 每个登录名都有自己的登录表单并看到不同的页面 最好有两个不同的表 因为两类人之间没有相似之处 每个登录表单仅由某些人使用 他们永远不会登录另一个表单 反之亦然 还有 两个登录表之间有关系
  • bean实例化失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:

    我的控制器中的构造函数有一些问题 我尝试在构造函数中调用一项服务 该服务在 AbstractController 中自动装配 但我遇到了空指针异常 一个组件 Component RestController RequestMapping v
  • Java/XSLT:找不到匹配的 1 参数函数

    我收到以下错误 javax servlet ServletException Cannot find a matching 1 argument function named http exslt org dynamic evaluate
  • Spring Boot 数据源配置

    我正在尝试使用application properties文件来配置 Spring Boot 必须使用的数据源 我已将以下属性放入其中 spring datasource driverClassName org postgresql Dri
  • 如何将 URI 转换为文件 Android 10

    如何在 android 10 及以上版本中从 URI 获取文件对象或将 URI 转换为文件对象 final File file new File Environment getExternalStorageDirectory read me
  • Lucene索引从4.6版本升级到8.0.0

    我正在尝试将 Lucene 索引从 4 6 升级到 8 0 0 当我尝试使用以下方式升级工具时 java cp lucene core jar lucene backward codecs jar org apache lucene ind
  • 递归记忆化

    我试图理解memoization的Haskell实现 但我不明白它是如何工作的 memoized fib Int gt Integer memoized fib map fib 0 where fib 0 0 fib 1 1 fib n m
  • 刷新不起作用

    Why fflush 不起作用c2 and c0 如果我使用声明c0 0 and c2 0它有效 但是fflush stdin 不起作用 我尝试放在不同的地方 但它不起作用 我在 ubuntu 13 04 中使用代码块 int main v