对 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 感到困惑 的相关文章

随机推荐

  • 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 我不太理解这段代码 我