对 getchar 和 scanf 感到困惑

2024-03-12

我真的很困惑的用法getchar() and scanf()。这两者有什么区别?

我知道scanf()[和家人]从用户[或文件]处获取一个字符一个字符并将其保存到一个变量中,但它是立即执行还是在按下某些内容后执行此操作(Enter)?

我不太理解这段代码,我看到很多代码使用getchar()它们都让你在屏幕上输入任何你想要的内容并且没有任何反应,但是当你按下enter它退出了。

int j, ch;

printf("please enter a number : \n");

while (scanf("%i", &j) != 1) {
    while((ch = getchar()) != '\n') ;
    printf("enter an integer: ");
}

在这段代码中我不能使用scanf()逐个字符地获取并测试它?另外,这一行是什么意思?

scanf("%i", &j) != 1

因为当我按 1 时,与按 2 时没有什么不同?这件作品有什么作用?

这条线什么时候会发生?

printf("enter an integer: ");

因为它永远不会发生。


Well, scanf是一个多功能实用函数,可以根据格式字符串读取多种类型的数据,同时getchar()只读取一个字符。

基本上,

char someCharacter = getchar();

相当于

char someCharacter;
scanf("%c", &someCharacter);

我不是100%确定,但如果你只需要读一个字符,getchar()可能比“便宜”scanf(),因为处理格式字符串的开销不存在(如果您阅读,这可能会很重要)many字符,就像在一个巨大的 for 循环中一样)。

对于第二个问题。

这段代码:

scanf("%i", &j) != 1

意味着你想要scanf读取变量“j”中的整数。如果读取成功,即流中的下一个输入实际上是一个整数,scanf将返回 1,因为它正确读取并分配了 1 个整数。

查看最旧的答案这个问题 https://stackoverflow.com/questions/10469643/value-returned-by-scanf-function-in-c欲了解更多详细信息scanf返回值。

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

对 getchar 和 scanf 感到困惑 的相关文章

  • 使用 gcc 在 Linux 上运行线程构建块 (Intel TBB)

    我正在尝试为线程构建块构建一些测试 不幸的是 我无法配置 tbb 库 链接器找不到库 tbb 我尝试在 bin 目录中运行脚本 但这没有帮助 我什至尝试将库文件移动到 usr local lib 但这又失败了 任何的意见都将会有帮助 确定您
  • 删除文件的最后 10 个字符

    我想删除文件的最后 10 个字符 说一个字符串 hello i am a c learner 是文件内的数据 我只是希望该文件是 hello i am a 文件的最后 10 个字符 即字符串 c learner 应在文件内消除 解决方案 将
  • 在模板类中声明模板友元类时出现编译器错误

    我一直在尝试实现我自己的链表类以用于教学目的 我在迭代器声明中指定了 List 类作为友元 但它似乎无法编译 这些是我使用过的 3 个类的接口 Node h define null Node
  • 调用 McAfee 病毒扫描引擎

    我收到客户的请求 要求使用他们服务器上的 McAfee 病毒扫描将病毒扫描集成到应用程序中 我做了一些调查 发现 McScan32 dll 是主要的扫描引擎 它导出各种看起来有用的函数 我还发现提到了 McAfee Scan Engine
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • 有没有办法让 doxygen 自动处理未记录的 C 代码?

    通常它会忽略未记录的 C 文件 但我想测试 Callgraph 功能 例如 您知道在不更改 C 文件的情况下解决此问题的方法吗 设置变量EXTRACT ALL YES在你的 Doxyfile 中
  • C++ 继承的内存布局

    如果我有两个类 一个类继承另一个类 并且子类仅包含函数 那么这两个类的内存布局是否相同 e g class Base int a b c class Derived public Base only functions 我读过编译器无法对数
  • 当文件流没有新数据时如何防止fgets阻塞

    我有一个popen 执行的函数tail f sometextfile 只要文件流中有数据显然我就可以通过fgets 现在 如果没有新数据来自尾部 fgets 挂起 我试过ferror and feof 无济于事 我怎样才能确定fgets 当
  • C# 使用“?” if else 语句设置值这叫什么

    嘿 我刚刚看到以下声明 return name null name NA 我只是想知道这在 NET 中叫什么 是吗 代表即然后执行此操作 这是一个俗称的 条件运算符 三元运算符 http en wikipedia org wiki Tern
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile
  • 在OpenGL中,我可以在坐标(5, 5)处精确地绘制一个像素吗?

    我所说的 5 5 正是指第五行第五列 我发现使用屏幕坐标来绘制东西非常困难 OpenGL 中的所有坐标都是相对的 通常范围从 1 0 到 1 0 为什么阻止程序员使用屏幕坐标 窗口坐标如此严重 最简单的方法可能是通过以下方式设置投影以匹配渲
  • 如何确定 CultureInfo 实例是否支持拉丁字符

    是否可以确定是否CultureInfo http msdn microsoft com en us library system globalization cultureinfo aspx我正在使用的实例是否基于拉丁字符集 我相信你可以使
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • MySQLDataReader在c#中检索Null值问题

    我目前正在开发一个 C 项目 该项目将导出 MySQL 数据 导出适用于服务器内的任何数据库 因此我不会知道表中的字段和数据类型 也不会知道表中的字段是否允许空值 在测试过程中 我发现导出工作正常 但如果字段允许 null 则当 mysql
  • 康威与 Python 的生命游戏

    我喜欢上了 Conway 的 生命游戏 并开始尝试用 Python 编写它 目前我还没有为程序的边界编写任何代码 所以我只是就我现在拥有的东西寻求帮助 我在初始化 闪烁器 阵型时似乎遇到了麻烦 它没有像应有的那样振荡 而是似乎将自己变成了立
  • 使用 buildozer 打包 kivy 应用程序时如何修复“java.lang.module.FindException:未找到模块 java.se.ee”错误

    我正在尝试打包我的 kivy 应用程序 python3 但是当我运行命令时buildozer v android debug看到这个错误 Cwd home javier buildozer android platform android
  • client-go:将 kubernetes json 文件解析为 k8s 结构

    我想解析 kubernetes 清单文件 json yaml 并能够将它们转换为 k8s 结构 以便稍后操作它们 我知道有 NewYAMLOrJSONDecoder Decode 函数 https github com kubernetes
  • C# 中的正确柯里化

    给定一个方法DoSomething它接受一个 无参数 函数并以某种方式处理它 有没有比下面的代码片段更好的方法来为带有参数的函数创建 重载 public static TResult DoSomething
  • VB.NET 中的隐式转换

    这个问题是针对懒惰的 VB 程序员的 请 在 vb 中我可以做到并且不会出现任何错误 实施例1 Dim x As String 5 Dim y As Integer 5 Dim b As Boolean True 实施例2 Dim a As
  • 如何显示非模式对话框并立即在其中显示信息?

    我想在屏幕上显示一个无模式对话框并在其中显示一些信息 但是 如果我按照以下方式使用它 则会出现一些问题 function showdialog XXX heavy work update the dialog heavy work upda
  • 使用reflect.Typeof()进行golang类型断言

    我试图用字符串值 名称 来识别结构 reflect TypeOf回报Type 但是类型断言需要一个type 我怎样才能铸造Type to type 或者有什么建议可以处理吗 http play golang org p 3PJG3YxIyf
  • 需要有关 Node.js 的 SQLite3 教程和代码示例说明

    我现在对 SQLite 有点困惑 因为这是我第一次使用数据库 我从这里得到了 sqlite3 https github com developmentseed node sqlite3 https github com developmen
  • 如何根据所选选项更改选择元素的宽度?

    我有一个很大的下拉菜单列表 某些选项的文本非常大 我想根据所选选项设置所选元素的宽度 如果所选选项是 Selected 那么宽度应该是 120px 之类的 当用户选择 非常大的选定选项 时 宽度大于
  • cross_val_score 不符合实际的输入模型吗?

    我正在开展一个项目 其中需要处理大型数据集 我需要在 Sklearn 的 KFold 交叉验证库中训练 SVM 分类器 import pandas as pd from sklearn import svm from sklearn met
  • 将 inception 输出导出为 spacy 的训练输入格式

    我正在使用 INCEPTION 0 11 0 https inception project github io https inception project github io 来注释我的训练数据 我想使用 python spacy 来
  • 如何在 IIS 上的 ASP.NET Core 中使用 MaxRequestBodySize 和 maxAllowedContentLength?

    我有一个在 IIS 上运行的 ASP NET Core Web API 在一次操作中 我设置了IHttpMaxRequestBodySizeFeature MaxRequestBodySize to 262144000 我已经使用 IIS
  • 作为表单属性的表单元素

    如果表单中有一个表单元素 并且该元素有一个name or id 您可以直接从表单的 DOM 元素访问它作为具有该名称的属性 这种行为似乎得到了非常广泛的支持 是否有任何规范涵盖它 如果有 是哪一个规范 此行为适用于表单elements收藏已
  • Python属性函数的C代码?

    我真的很好奇howPython的解释器创建一个属性x从一个方法中x通过x property x 如果我能看一下C代码 我会感觉好多了 类型定义在descrobject c file http hg python org cpython fi
  • ID动态文档firestore

    如何在firestore中制作该文档的IDQEoevSjHlswgk44nVTsr动态的 即根据该集合中的 ID 进行更改 我正在使用 angularfire2 5 0 0 rc 11 这就是我所拥有的 firebase service t
  • 如何在Svelte中动态渲染组件?

    我试图循环遍历一个数组来渲染具有以下值的组件type each contents as content lt content type gt each 期望的输出
  • 为什么Activity结束时会抛出NPE?

    我有一个错误 这几天来一直让我发疯 不幸的是 我无法向您展示代码 原因有两个 我的老板不会欣赏它 并且代码库太大而无法共享 每当活动完成时就会发生该错误 无论是因为我调用 finish 还是因为操作系统破坏了它 问题是 是什么 或可能 导致
  • FullCalendar Scheduler 列标题格式

    我正在使用 FullCalendar 和调度程序 最新版本 我想将列标题格式替换为 DM dddd 我尝试使用 columnHeaderFormat 但它似乎不起作用 我也尝试使用旧的 即columnFormat 但它仍然不起作用 docu
  • 对 getchar 和 scanf 感到困惑

    我真的很困惑的用法getchar and scanf 这两者有什么区别 我知道scanf 和家人 从用户 或文件 处获取一个字符一个字符并将其保存到一个变量中 但它是立即执行还是在按下某些内容后执行此操作 Enter 我不太理解这段代码 我