替换 fflush(stdin)

2023-12-14

我有下面的代码,

fflush(stdin);
print("Enter y/n");
scanf("%c",&a);

在这里,它在提供输入之前退出。看起来问题是因为它没有刷新可能包含一些垃圾字符的输入缓冲区。是否有刷新(stdin)的替代方案。此代码片段在 Solaris 中工作但它在 Linux 中不起作用。


这在C FAQ。也可以看看:解释。建议的解决方案:

  • 退出使用 scanf。使用fgetssscanf
  • 用这个来吃换行符

    while((c = getchar()) != '\n' && c != EOF)
    /* discard the character */;
    

事实上,刷新 stdin 适用于某些实现is wrong.

有些供应商确实实现了fflush,所以 fflush(stdin) 丢弃未读的内容 字符,虽然可移植程序 不能依赖于此。

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

替换 fflush(stdin) 的相关文章

  • Blowfish 加密在加密和解密过程中弄乱了前 8 个字节

    我刚刚尝试使用 openssl c 库 Blowfish 算法进行一些加密 解密 并遇到了一个奇怪的错误 解密消息的前 64 位不知何故搞砸了 我究竟做错了什么 这是代码 include
  • C 和 C++ 中的“**”是什么意思?

    当一个对象开头有两个星号时意味着什么 variable 在声明中 这意味着它是一个指向指针的指针 int x declare x as a pointer to a pointer to an int 使用它时 它会引用它两次 int x
  • 将 std::lock_guard 与 try_lock 一起使用

    有什么办法可以告诉我std lock guard打电话try lock代替lock当它获取互斥锁时 我能想到的唯一方法是使用std adopt lock if mutex try lock Handle failure and return
  • 忽略控制器参数缺失导致的异常

    我有一个使用 MVC4 构建的面向互联网的网站 我偶尔会收到来自机器人或好奇的用户发送不完整 URL 请求的错误报告 例如 public class ProductController Controller HttpGet public v
  • C++:空类的对象的大小是多少?

    我想知道可能是什么空类对象的大小 肯定可以not为 0 字节 因为它应该可以像任何其他对象一样引用和指向它 但是 这样的物体有多大呢 我用了这个小程序 include
  • ~ C 中的运算符

    该程序的输出是 13 我从来没有完全理解 C 中的 运算符 为什么它给出 13 作为输出 如何将 运算符限制为数字的 4 位 include
  • 在运行时更改语言的正确方法

    在运行时更改表单语言的正确方法是什么 使用递归手动设置所有控件 例如this https stackoverflow com questions 7556367 how do i change the culture of a winfor
  • 以编程方式解析和编辑 C++ 源文件

    我想以编程方式解析和编辑 C 源文件 我需要更改 添加代码的某些部分 即函数 类块等 中的代码 我也 最好 能够得到评论 我想做的部分事情可以用下面的代码来解释 CPlusPlusSourceParser cp new CPlusPlusS
  • 为什么我们不能将新字符串分配给 char 数组,而是分配给指针?

    我试图将字符串重新分配给预初始化的数组 a 但我得到的只是一个错误 main char a Sunstroke char b Coldwave a Coldwave b Sunstroke printf n s s a b 错误 从类型 c
  • 创建新文件夹的“Shell 命名空间”方式是什么?

    显然 这对于 win32 api CreateDirectory 来说是微不足道的 但我正在尝试托管一个 IShellView 并且希望以最面向 shell 的方式来做到这一点 我本以为 IShellFolder 中会有一个 createo
  • 如何在Linux上正确设置串行通信

    我正在尝试从 FPGA 板读取数据以及向 FPGA 板写入数据 该板本身附带一个驱动程序 每当板插入时 该驱动程序都会创建一个名为 ttyUSB0 的终端设备 在 FPGA 上 实现了异步接收器和发送器 并且它们似乎可以工作 然而 C 方面
  • 可变参数模板中的可变参数模板推导

    我不确定标题是否有意义 但这个例子实际上非常简单 A converter struct with a generic constructor template
  • 如何检测任务栏上的右键单击

    我有一个 C 语言的 Windows 窗体应用程序 它以加载对话框开始 正如预期的那样 该应用程序的按钮会显示在 Windows 任务栏中 我想检测可能对该按钮进行的 右键单击 最终 我希望禁用右键单击或只是让加载对话框重新获得焦点 我看到
  • 无法从 GetSystemTime() 获取毫秒

    我正在尝试打印秒和毫秒分辨率计时 我正在使用GetSystemTime 这是我的代码 GetSystemTime datetime RETAILMSG 1 T Time After Data Sent to USB d d r n date
  • 如何在网络浏览器中打开 Excel?

    单击按钮时我需要在网络浏览器中打开 Excel 如何在 asp net 中执行此操作 您无法在客户端 浏览器 计算机上控制和启动软件 为什么 安全 如果这是可能的话 黑客早就接管了所有计算机 你能解释一下吗exactly你想做什么 如果您解
  • 实施黑名单的最有效方法

    我开发了一个 Ip 过滤器 并猜测我如何使用任何类型的 esque 数据结构开发一个非常高效且快速的黑名单过滤器 我想做的很简单 每个传入 传出连接我都必须检查被阻止的 IP 列表 IP是分散的 内存使用应该是线性的 不依赖于阻止列表的数量
  • 如何在Azure函数应用程序中调用函数后动态更改内容

    我正在使用 Visual Studio 2019 使用 Azure function v3 0 开发 Azure function 应用程序 我实现了一个时间触发的功能 我想更改内容 时间表 function json function j
  • 在 C# 中获取 Selenium RemoteWebDriver 的会话 ID

    我正在尝试获取在 SauceLabs 云上运行的测试的会话 ID 但我似乎无法访问它 我尝试过以下方法 Returns null var sessionId string RemoteWebDriver driver Capabilitie
  • 同一个盒子上的进程间通信 - 2 个应用程序或进程之间的通信

    在同一机器上的应用程序之间实现进程间通信的最佳方法是什么 两者都是用 C 编写的 管理器应用程序将向其他应用程序发送命令 例如 停止 启动 它还将监视应用程序并可能要求提供数据 所有应用程序都将在同一台运行 Windows 7 操作系统的计
  • 配置 SourceTrail 以接受带有 @ 语法的嵌入式 c/c++ 头文件

    我正在尝试使用 Sourcetrail https www sourcetrail com https www sourcetrail com 快速了解 pic18 系列微控制器的一些旧嵌入式 c c 源代码 导入硬件包含文件时出现错误 该

随机推荐

  • 你能在继承树中重新抽象一个方法吗?

    EDIT 需要明确的是 设计相当丑陋并不是重点 关键是 设计已经存在 我面临的情况是必须添加另一个子类FlyingMotorizedVehicle如果我忘记添加 这将无法按预期工作foo 所以我只是想知道是否可以将其重新定义为抽象 我现在面
  • 如何在 Drupal 8 中更新我的视图而不返回首页?

    我正在尝试刷新 Drupal 8 中的视图 而无需使用以下代码重新加载页面 function Drupal use strict setInterval function view message activity stream timel
  • 如何检测AVPlayer视频何时结束播放?

    我正在使用 AVPlayer 在 Swift 中播放本地视频文件 mp4 有谁知道如何检测视频何时播放结束 谢谢 为了得到AVPlayerItemDidPlayToEndTimeNotification你的对象需要是 AVPlayerIte
  • 使用 mechanize 登录网页

    这是我第一次使用 Python 编程 我正在尝试登录this网页 经过搜索 我发现很多人建议使用mechanize 为了确保我在开始编码之前正确设置 我下载了mechanize从网站上下载 zip 并将我的 python 脚本放在解压缩的
  • PHP 中的新行。如何?

    Code 我试图将其显示为两行 但换行符不起作用 而是在两行之间打印一个空格 我尝试过 r n 以及 PHP EOL 以及将字符串放在单引号中 它们似乎都不起作用 那么如何在 PHP 中打印新行呢 我正在研究 phpDesigner 8 U
  • fget 和 gets 之间的区别

    有什么区别fgets and gets 当用户点击 输入 时 我试图打破循环 它配合得很好gets 但我不想使用gets 我尝试过fgets and scanf 但我没有得到相同的结果gets fgets 无论用户在文本中输入什么 都会打破
  • 在Android中,不应该使用System.gc()吗?

    我想知道不应该在 android 中使用 System gc 我搜了一下开发者文档 Result 公共静态无效GC 添加到 API 级别 1 向虚拟机表明现在是个好时机 运行垃圾收集器 请注意 这只是一个提示 有 不能保证垃圾收集器实际上会
  • Android Studio:库项目依赖项是否从project.properties中选取?

    我已经从 ADT 导入了我的项目 进入 模块设置 并编辑依赖项后 一切工作正常 我的 build gradle 的依赖项块为空 所以我想知道 Ansdroid Studio 从哪里选择库依赖项 当我从 eclipse 迁移时 模块目录中有
  • 同时多个手势响应器

    我需要一些可以同时按下的按钮 但目前如果您按下一个按钮 它会 声称 响应 而其他按钮则无法再按下 我该怎么做呢 知道了 你必须使用ReactNativeEventEmitter直接监听触摸事件并完全绕过手势响应器 下面是一个装饰器类 它调用
  • 我可以在 tomcat 中放置手动提取的战争而不是deployOnStartup = true吗? tomcat中已经解压war文件是否正确

    我在 tomcat server xml 中添加了deployOnStartup true 但由于安全问题 建议将deployOnStartup false 因为保持它为true会允许部署恶意或未经测试的应用程序 因此应该禁用它 将提取的
  • 如何阻止 Windows 窗体中重写的 WndProc 函数中的双击?

    我在 Windows 窗体中创建了一个窗体 可以将其拖动到任意位置 我通过重写 WndProc 函数来实现它 该函数反过来修改每次单击 因为它是标题栏单击 found at http stackoverflow com questions
  • 混淆测试 fftw3 - 泊松方程 2d 测试

    我无法解释 理解以下现象 为了测试 fftw3 我使用 2d 泊松测试用例 laplacian f x y g x y 具有周期性边界条件 对方程进行傅里叶变换后 我们得到 F kx ky G kx ky kx ky 1 如果我取 g x
  • 在 Windows 8.1 存储 XAML 中添加新项目后,ListView.ContainerFromItem 返回 null

    我有一个简单的 ListView 没有项目模板和 SelectionChanged 事件设置
  • PHP MYSQLI编写语句登录并检查用户状态

    我正在学习使用一些基于 mysqli 的视频教程制作网站 我开始知道使用准备好的语句更安全 我正在尝试创建一个登录系统 这是我到目前为止所做的 这段代码帮助我完全登录成功
  • 使用 Cloud Functions 在 Google Cloud Platform 中设置环境变量

    我正在关注在这里指导并且似乎无法让我的Python应用程序 在GCP上很好地部署 来读取我在Cloud Functions中创建的环境变量 该函数的 REST 端点可以很好地返回环境变量 因为我已经在函数中编写了 Python 方法来执行此
  • 在访问选项卡之前,另一个选项卡中的传单未使用 leafletproxy 进行更新

    我正在制作一个使用闪亮的应用程序 该应用程序使用多个选项卡 在一个选项卡 不是起始选项卡 上 我显示一张传单地图 该地图由不同选项卡上的小部件控制 问题是 如果我更改一个选项卡上的输入 而不先访问地图 然后访问地图 则地图不会更新 但是 在
  • vue-router 与 laravel 路由结合

    我已成功设置 vue router 但将其与我的 laravel 5 3 路由混合时遇到一些问题 我有一个回家的 php 路线 Route get array as gt home uses gt HomeController showWe
  • Maven:如何检查工件是否存在?

    如何从 Mojo 内部检查本地存储库中是否已存在工件 我正在将大型二进制文件安装到本地 Maven 存储库中 在尝试下载它们之前我需要知道它们是否已经存在 在以下人员的帮助下解决了http docs codehaus org display
  • 拦截 Spring MVC 3 中的视图/响应

    我是 Spring MVC 3 的新手 我了解基本概念 我能够做简单的事情 例如创建控制器 服务和视图 然而 我还没有涉足更高级的领域 因此 如果这个问题看起来很愚蠢 或不可能 我深表歉意 我想知道是否有一种方法可以拦截视图和 或响应并在将
  • 替换 fflush(stdin)

    我有下面的代码 fflush stdin print Enter y n scanf c a 在这里 它在提供输入之前退出 看起来问题是因为它没有刷新可能包含一些垃圾字符的输入缓冲区 是否有刷新 stdin 的替代方案 此代码片段在 Sol