在 while 循环中使用 getchar()

2023-12-21

#include <stdio.h>
main()
{
    int c ;
    while ((c = getchar()) != EOF)
    {
        int isEOF = (c==EOF);
        printf("is %c EOF: %d ", c, isEOF);
    }
}

为什么这里的每个输入字符都会调用 printf() 方法两次?

如果我输入“a”,我会得到类似的结果

E:\C_workouts>gcc CharIO.c -o CharIO.exe

E:\C_workouts>CharIO.exe
a
is a EOF: 0 is
 EOF: 0

每个输入都会发生同样的情况。


因为你输入了 'a' and '\n'...

The '\n' 是按下的结果[ENTER]在终端/控制台的输入行中输入后按 键。这getchar()函数将返回每个字符,一次一个,直到输入缓冲区被清除。所以你的循环将继续循环直到getchar()已吃掉任何剩余的字符stdin流缓冲区。

如果您期待stdin调用时要清除输入缓冲区getchar()那么你应该flush stdin with while((ch=getchar())!='\n'&&ch!=EOF);在调用之前消耗缓冲区中的任何先前内容getchar()。一些实现(即许多 DOS/Windows 编译器)提供非标准fflush(stdin);

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

在 while 循环中使用 getchar() 的相关文章

  • 将复选框添加到 UniformGrid

    我正在尝试将复选框动态添加到 wpf 中的统一网格中 但看起来网格没有为它们分配足够的空间 所以它们都有点互相重叠 这就是我将它们添加到后面的代码中的方法 foreach string folder in subfolders PathCh
  • 无法使用已与其底层 RCW 分离的 COM 对象。在 oledb 中

    我收到此错误 但我不知道我做错了什么 下面的代码在backrgroundworker中 将异常详细信息复制到剪贴板 System Runtime InteropServices InvalidComObjectException 未处理 通
  • 访问私人成员[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 通过将类的私有成员转换为 void 指针 然后转换为结构来访问类的私有成员是否合适 我认为我无权修改包含我需要访问的数据成员的类 如果不道德 我
  • C# 和 Javascript SHA256 哈希的代码示例

    我有一个在服务器端运行的 C 算法 它对 Base64 编码的字符串进行哈希处理 byte salt Convert FromBase64String serverSalt Step 1 SHA256Managed sha256 new S
  • Qt-Qlist 检查包含自定义类

    有没有办法覆盖加载自定义类的 Qt QList 的比较机制 即在 java 中你只需要重写一个比较方法 我有一个带有我的自定义类模型的 QList QList
  • 当我使用“control-c”关闭发送对等方的套接字时,为什么接收对等方的套接字不断接收“”

    我是套接字编程的新手 我知道使用 control c 关闭套接字是一个坏习惯 但是为什么在我使用 control c 关闭发送进程后 接收方上的套接字不断接收 在 control c 退出进程后 发送方的套接字不应该关闭吗 谢谢 我知道使用
  • 如何避免情绪低落?

    我有一个实现状态模式每个状态处理从事件队列获取的事件 根据State因此类有一个纯虚方法void handleEvent const Event 事件继承基础Event类 但每个事件都包含其可以是不同类型的数据 例如 int string
  • 在 Visual Studio 2008 上设置预调试事件

    我想在 Visual Studio 中开始调试程序之前运行一个任务 我每次调试程序时都需要运行此任务 因此构建后事件还不够好 我查看了设置的 调试 选项卡 但没有这样的选项 有什么办法可以做到这一点吗 你唯一可以尝试的 IMO 就是尝试Co
  • C 预处理器库

    我的任务是开发源分析工具C程序 并且我需要在分析本身之前预处理代码 我想知道什么是最好的图书馆 我需要一些重量轻 便于携带的东西 与其推出自己的 为什么不使用cpp这是的一部分gcc suite http gcc gnu org onlin
  • Json.NET - 反序列化接口属性引发错误“类型是接口或抽象类,无法实例化”

    我有一个类 其属性是接口 public class Foo public int Number get set public ISomething Thing get set 尝试反序列化Foo使用 Json NET 的类给我一条错误消息
  • Qt moc 在头文件中实现?

    是否可以告诉 Qt MOC 我想声明该类并在单个文件中实现它 而不是将它们拆分为 h 和 cpp 文件 如果要在 cpp 文件中声明并实现 QObject 子类 则必须手动包含 moc 文件 例如 文件main cpp struct Sub
  • 在数据库中搜索时忽略空文本框

    此代码能够搜索数据并将其加载到DataGridView基于搜索表单文本框中提供的值 如果我将任何文本框留空 则不会有搜索结果 因为 SQL 查询是用 AND 组合的 如何在搜索 从 SQL 查询或 C 代码 时忽略空文本框 private
  • Github Action 在运行可执行文件时卡住

    我正在尝试设置运行google tests on a C repository using Github Actions正在运行的Windows Latest 构建过程完成 但是当运行测试时 它被卡住并且不执行从生成的可执行文件Visual
  • 将 unsigned char * (uint8_t *) 转换为 const char *

    我有一个带有 uint8 t 参数的函数 uint8 t ihex decode uint8 t in size t len uint8 t out uint8 t i hn ln for i 0 i lt len i 2 hn in i
  • 需要哪个版本的 Visual C++ 运行时库?

    microsoft 的最新 vcredist 2010 版 是否包含以前的版本 2008 SP1 和 2005 SP1 还是我需要安装全部 3 个版本 谢谢 你需要所有这些
  • WCF:将随机数添加到 UsernameToken

    我正在尝试连接到用 Java 编写的 Web 服务 但有些东西我无法弄清楚 使用 WCF 和 customBinding 几乎一切似乎都很好 除了 SOAP 消息的一部分 因为它缺少 Nonce 和 Created 部分节点 显然我错过了一
  • C - 直接从键盘缓冲区读取

    这是C语言中的一个问题 如何直接读取键盘缓冲区中的数据 我想直接访问数据并将其存储在变量中 变量应该是什么数据类型 我需要它用于我们研究所目前正在开发的操作系统 它被称为 ICS OS 我不太清楚具体细节 它在 x86 32 位机器上运行
  • 32 位到 64 位内联汇编移植

    我有一段 C 代码 在 GNU Linux 环境下用 g 编译 它加载一个函数指针 它如何执行并不重要 使用一些内联汇编将一些参数推送到堆栈上 然后调用该函数 代码如下 unsigned long stack 1 23 33 43 save
  • Process.Start 阻塞

    我正在调用 Process Start 但它会阻止当前线程 pInfo new ProcessStartInfo C Windows notepad exe Start process mProcess new Process mProce
  • 使用按位运算符相乘

    我想知道如何使用按位运算符将一系列二进制位相乘 但是 我有兴趣这样做来查找二进制值的十进制小数值 这是我正在尝试做的一个例子 假设 1010010 我想使用每个单独的位 以便将其计算为 1 2 1 0 2 2 1 2 3 0 2 4 虽然我

随机推荐

  • Spring Rest 与 Hibernate 的延迟加载

    我正在尝试使用 hibernate 开发 Spring Rest api 在谷歌搜索后 我没有找到延迟加载的解决方案 我有两个如下所示的实体 大学 java Entity Table schema core name university
  • 更新语句-地理列-sql server

    更新 sql server 中的地理列与常规字段 varchar 是否不同 您能否提供一份示例声明来执行此操作 谢谢 我不确定这是否是您正在寻找的答案 但正如我所说 主要区别在于更新 常规字段 时 您通常直接提供新值 例如 UPDATE m
  • Networkx:将多重图转换为具有加权边的简单图

    我有一个多图对象 想将其转换为具有加权边的简单图形对象 我浏览了 networkx 文档 似乎找不到内置函数来实现此目的 我只是想知道是否有人知道 networkx 中的内置函数可以实现这个目标 我查看了 to directed to un
  • BIRT 报告未在 Web 查看器中运行

    我正在 BIRT 设计器中设计报告 当我尝试预览报告或以 html 形式运行时 报告看起来不错 但是 当我尝试在报告查看器 在 IE 或 Firefox 中打开 中运行报告时 它似乎不起作用 请检查所附图片 上面的报告是需要提示 参数 过滤
  • 迭代 df 列并根据行索引、列引用返回数据框中的值

    我的目标是将 年份 列中的每个值与相应的列年份 即 1999 年 2000 年 进行比较 然后我想从相应的列返回相应的值 例如 对于 2004 年阿富汗 第一行 我想查找名为 2004 的列并返回包含阿富汗的行中的值 这是桌子 作为参考 该
  • 如何为轻量级图表设置自定义时区?

    我有一个如下所示的轻量级图表设置 我想添加某种配置 以便图表可以显示本地时间 而不是 Unix 时间戳传递的通用时间 例如 它与我的时间戳有几个小时的偏移 另一种可能性是修改 Unix 时间戳 var chart LightweightCh
  • Rails ActiveRecord:获取原始插入的 id

    sql DmozCategory send sanitize sql array INSERT INTO dmoz categories id dmoz category title dmoz category name dmoz cate
  • Python 将文件拆分为列表

    我在使用下面的功能时遇到问题 它似乎很好地分割了文件 但随后只将其作为一个元素返回 功能 def splitRoute route for line in open route txt r readlines line line repla
  • C# 中的调用堆栈限制[重复]

    这个问题在这里已经有答案了 我想知道在出现堆栈溢出异常之前 我们可以在 C 中的堆栈中执行多少次调用 所以我决定编写以下代码 static void Method2 int Calls if Calls Equals 0 Method1 C
  • 在哪里可以找到一个好的 PHP MediaWiki 标记解析器?

    我会尝试稍微破解一下 MediaWiki 的代码 但我发现如果我能得到一个独立的解析器 那就没有必要了 谁能帮我这个 Thanks 本 休斯是对的 要做到正确是非常困难的 特别是如果您想以 100 的准确率解析来自大型 wiki 例如维基百
  • Android 日期时间选择器在一个对话框中

    我正在使用材料Date Time我的 Android 应用程序的选择器 但我想结合Date and Time在一个对话框中选择选择器 我正在关注this one https github com wdullaer MaterialDateT
  • JdbcTemplate删除语法

    有人可以指出我的以下 Spring Jdbc 模板代码中的任何错误吗 当我单击 删除 时 记录不会被删除 也不会显示任何错误 public void delete String id logger debug Deleting existi
  • 从 cookiesyncmanager 进行 Jsoup cookie 身份验证以从 https 站点抓取

    我有一个使用 webview 的 android 应用程序 用户必须使用用户名和密码登录 然后才能重定向到我想使用 jsoup 刮除数据的页面 由于 jsoup 线程将是不同的会话 因此用户必须再次登录 现在我想使用从 webview 接收
  • 运行 QLDB 查询时 Lambda 随机长时间执行

    当 SQS FIFO 队列上有消息时 我有一个由该队列触发的 lambda 基本上 这个 lambda 是从队列获取消息并通过 VPC 终端节点连接到 QLDB 以便运行简单的 SELECT 查询和后续的 INSERT 查询 查询选择的表有
  • 如何平滑我的 JFrame 形状

    我给我的 JFrame 窗口一个带圆角的自定义形状 但如何平滑它 抗锯齿 很大程度上取决于您如何呈现内容 但基本概念是向内容提供呈现提示Graphics您正在绘制的上下文 例如 如果我要绘制一个组件 我可能会使用类似 Create a co
  • 可以使用nodejs和puppeteer获取HTTP响应头吗?

    你好呀 有没有可能的方法来获取像上面这样的服务器信息nodejs and 木偶师 非常感谢 这些是响应标头 您可以使用它们来获取响应 headers https github com GoogleChrome puppeteer blob
  • pytorch:无法加载 CNN 模型并进行预测 TypeError:“collections.OrderedDict”对象不可调用

    我使用 MNIST 数据集训练了一个 CNN 模型 现在想要预测图像的分类 其中包含数字 3 但是当我尝试使用这个 CNN 进行预测时 pytorch 给了我这个错误 TypeError collections OrderedDict ob
  • 有和没有类型归属的最终值的 Scala 不一致行为

    我在用scala 2 10 3我注意到以下行为 object TestConstantScala final val str1 String foo number1 final val number1 Int 123 final val n
  • 使用基于表单的身份验证修改 SharePoint 应用程序 Web.config 文件

    我们有一个 SharePoint 应用程序 我们希望用户能够通过激活一项功能来修改 web config 该应用程序已扩展 因此我们有一个基于 AD 的 Web 应用程序和另一个使用基于表单的身份验证 FBA 的应用程序 其中 FBA 应用
  • 在 while 循环中使用 getchar()

    include