c中的scanf和换行符[重复]

2023-11-22

我今天刚刚在 C 班进行了一次测试,我有理由相信答案可能是错误的。

scanf("%d\n", &x); // Evaluate the expression for the string "54321\n"

这个想法非常简单。找到一个整数,并将扫描到的数放到整型变量对应的内存位置x。但是,我不相信这个电话scanf将永远终止。

就我而言,所有的电话scanf标准 I/O 通过按 Enter 键终止,因此无需在说明符字符串中包含换行符。事实上,这种冗余只会导致程序在搜索永远不会与字符串匹配的内容时停止。

有没有人可以澄清一下技术细节scanf函数可以解决这个问题吗?


我不相信对 scanf 的调用会终止。

6个字符输入如"54321\n"不足以造成这种情况scanf("%d\n", &x);回来。程序停滞。还必须发生其他事情。


'\n'指挥scanf()消耗空白并这样做直到

  1. 检测到非空白。

  2. stdin关闭了

  3. 输入错误发生在stdin (rare).

As stdin通常是line缓冲的,scanf()以块的形式接收数据。

The first chunk 123Enter is not enough to cause scanf("%d\n", &x); to return. One of the 3 above needs to happen.

Any following input with some non-white-space fulfills #1, be it:
456Enter or
xyzEnter or
EnterEnter$Enter or ...

Then scanf() will return with a 1 indicate a value, 123, was stored in x. The 4, x or $ above was the non-white-space detected that caused completion. That character will be the next character read by subsequent input on stdin.


scanf("%d\n", &x);几乎可以肯定是使用了错误的代码,因为它有义务another用户输入的行,并且不检查其返回值。

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

c中的scanf和换行符[重复] 的相关文章

随机推荐

  • jQuery 加载函数

    我使用以下脚本来调用 onload 函数 但它在 IE 中不起作用 body attr onload calFact 如果您使用 jQuery 您可以使用ready 函数如下 function callFact 或者更简单 只需将方法传递给
  • 检查 JSON 中是否存在子对象

    我正在使用以下命令检查 JSON 字符串中的对象是否存在 JSONObject json null try json new JSONObject myJsonString catch JSONException e e printStac
  • 与 Java 11 兼容的最低 Spring 版本

    我需要很快将应用程序升级到 Java 11 我想知道与 Java 11 兼容的最低 Spring 版本是多少 我目前正在使用 Java 8 和 Spring 4 2 7 从他们的任务跟踪器 SPR 16391 与 JDK 11 的兼容性 J
  • 如何 grep 查找文件中的 URL?

    例如 我有一个巨大的 HTML 文件 其中包含 img URL http ex example com hIh39j ud9wr4 Uusfh jpeg 我想获取这个 URL 假设它是only整个文件中的 url cat file html
  • 从 Windows 命令提示符交互式运行 R [关闭]

    Closed 这个问题是无关 目前不接受答案 我需要从 win 中的命令提示符交互式启动 R 以便能够显示绘图 知道我该怎么做吗 谢谢 输入适合您系统的正确版本 C path to R bin R 该完整路径可以从 R 的安装位置获取 或者
  • Vim - 激活 PHP 文件上的 HTML 片段

    我正在使用vim和snipMate 很多时候我需要将HTML文件命名为PHP 只是因为一两行代码 我每次创建 PHP 文件时 vim 都会将其视为 PHP 文件 因此 HTML 片段不可用 因此必须使用命令手动激活 HTML 片段 set
  • 在网站上创建网站图标的最佳实践是什么? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 Question 创建一个的最佳实践是什么favicon在网站上 并且是一个 ico同时包含 16x16 和 32x32 图像的文件比 png文件只有 16x16 今天首选的正确方法是否无
  • 实现Spring Data存储库的自定义方法并通过REST公开它们

    我正在尝试将自定义方法添加到我的 Spring 数据存储库PersonRepository如中所述1 3 Spring Data 存储库的自定义实现并通过 REST 公开这些方法 初始代码来自使用 REST 访问 JPA 数据示例 这里是添
  • com.sun.istack.SAXException2 :实例...正在替换“java.lang.Object”,但是...绑定到匿名类型

    我正在将项目从版本 1 x 升级到 jaxb 2 2 7 我的应用程序有时可以运行 但在一些回复中我看到了这一点 java lang RuntimeException javax xml bind MarshalException with
  • CompletableFuture——快速失败的聚合未来

    我一直在使用CompletableFuture allOf 帮助器创建聚合期货 只有当它们的组合期货被标记为完成时才会 完成 即 CompletableFuture future2 new CompletableFuture lt gt C
  • asp.net mvc app_data 文件夹

    我想在服务器图库上存储大量图像 我可以为此创建自己的文件夹 但在默认模板中有一个名为 App Data 的文件夹 显然 我认为模板的创建者是为了让我们在那里存储数据 但我找不到打开该文件夹中任何内容的方法 是故意的吗 或者我该怎么做 或者我
  • 使用 AudioQueue 读取音频缓冲区数据

    我正在尝试通过 AudioQueue 读取音频数据 当我这样做时 我可以验证文件的位深度是否为 16 位 但当我获取实际的样本数据时 我只看到从 128 到 128 的值 但我也看到可疑的交错数据 这让我非常确定我只是没有正确读取数据 首先
  • 从命令行将 MySQL 变量传递给脚本

    我有一个 MySQL 更新脚本 我想从命令行运行 但我希望能够将阶段域变量传递给脚本 我知道这行不通 但这是我描述我正在尝试做的事情的最佳方式 uroot hlocalhost mydatabase execute SET domain m
  • SimpleMembership、MVC4、AuthorizeAttribute 和角色

    我正在尝试向我的一些 MVC4 控制器添加授权属性 只要它是一个计划 它们就可以正常工作 Authorize or Authorize Users myuser 但是当我添加任何类型的角色过滤时 它就会崩溃 例如 Authorize Rol
  • htmlentities() 与 htmlspecialchars()

    两者有什么区别htmlspecialchars and htmlentities 我什么时候应该使用其中之一 htmlspecialchars可能用过了 当不需要对具有 HTML 等效项的所有字符进行编码时 如果您知道页面编码与文本特殊符号
  • PHP - 密码验证问题

    我已经为此摸不着头脑两个多小时了 我研究过 stackoverflow 上的文章 包括 Bcrypt 未正确验证的问题 php的password hash和password verify问题不匹配 password verify 调用返回
  • DB (SQL) 自动压力/负载工具?

    我想测量数据库应用程序的性能和可扩展性 我正在寻找一种工具 允许我对数据库运行许多 SQL 语句 将数据库和脚本 SQL 文件作为参数 必要的详细信息 例如主机名 端口 登录名 理想情况下 它应该让我控制参数 例如模拟客户端的数量 测试持续
  • 无法加载脚本。确保您正在运行 Metro 服务器(运行“react-native start”)或者您的捆绑包“index.android.bundle”

    在 android studio 中运行我的项目时出现该错误 我刚刚安装了所有内容 并且一步一步地遵循了所有内容 我正在使用genymotion作为模拟器 并使用react native start从根目录 检查端口 8081 禁用即时运行
  • 在同一命名容器中重用 Facelets 组合时避免重复 id

    我有一个
  • c中的scanf和换行符[重复]

    这个问题在这里已经有答案了 我今天刚刚在 C 班进行了一次测试 我有理由相信答案可能是错误的 scanf d n x Evaluate the expression for the string 54321 n 这个想法非常简单 找到一个整