fscanf 是否可以返回零并同时消耗输入?

2023-12-02

是否有可能fscanf消耗输入并同时返回零?例如,如果我写

int res;
int k = fscanf(f, "%d", &res);

并检查一下k == 0,我可以确定下一次调用fscanf在同一个文件上f将在调用之前文件所在的同一位置继续fscanf?


中概述的主题的另一个变体达斯布林肯灯's answer is:

for (int i = 0; i < 20; i++)
{
    int rc;
    int number;
    if ((rc = scanf(" this is the time for all good men (all %d of them)", &number)) == 0)
    {
        char remnant[4096];
        if (fgets(remnant, sizeof(remnant), stdin) == 0)
            printf("Puzzling — can't happen, but did!\n");
        else
        {
            printf("The input did not match what was expected.\n");
            printf("Stopped reading at: [%s]\n", remnant);
        }
    }
    else if (rc == 1)
        printf("%d: There are %d men!\n", i + 1, number);
    else
    {
        printf("Got EOF\n");
        break;
    }
}

在包含以下内容的文件上尝试:

this is the time for all good men (all 3 of them)
this is the time for all good men (all 33 men)
   this   is   the
      time      for

all     good      men
(all

333 of

     them)
       this is the time for all good men to come to the aid of the party!

Etc.

Output:

1: There are 3 men!
2: There are 33 men!
The input did not match what was expected.
Stopped reading at: [men)
]
4: There are 333 men!
The input did not match what was expected.
Stopped reading at: [to come to the aid of the party!
]
Got EOF

请注意,即使在 ' 上匹配失败,第二句的转换也成功了。men)' (在哪里 'of them)'是预期的)。没有可靠的方法来获取有关上次计数后匹配失败的信息(非抑制、非抑制)%n) 转换。下一次匹配尝试完全失败,但是fgets()清理输入(读取行的剩余部分),然后后续尝试成功,因为格式字符串中的空格与输入中的任意空格序列匹配。 在示例数据的最后一行,信息 'this is the time for all good men' 已成功读取,但是 'to come to the aid of the party' 不匹配。

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

fscanf 是否可以返回零并同时消耗输入? 的相关文章

  • 插入多重集中:在该值第一次出现之前而不是最后一次出现之后

    正如标题所示 multiset 在所有相同值的范围末尾插入一个值 例如 在多重集中插入 21 2 2 3做到了1 2 2 new 2 3 如何在所有相同值的范围开头插入新值 例如 在多重集中插入 21 2 2 3应该使1 new 2 2 2
  • 为什么纯虚拟析构函数的实现必须为空?它应该是内联的吗?

    我在其他线程中读到 当您实现纯虚拟析构函数 是的 它可以有一个实现 时 它必须是空的 并且应该 是内联的 应该是空的吗 如果是这样 为什么 应该内联吗 如果是这样 为什么 编辑 这就是纯虚拟析构函数的实现方式 class A virtual
  • 寻求有关 cs50“现金”问题集的 C 贪婪算法的帮助[已关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 目标是创建一种算法 该算法接受输入并给出从输入中减去值 25 10 5 1 的次数的输出 代码需要以尽可能贪婪的方式执行此操作 尽可能获取最
  • Motif 库的水平绘制的 RowColumn 类 (C)?

    我正在使用 Motif Library 来完成我的工作 如果有人不熟悉这个库 您可以在这里找到文件列表https packages ubuntu com xenial amd64 libmotif dev filelist https pa
  • 减少最大值并保存其索引

    int v 10 2 9 1 3 5 7 1 2 0 0 int maximo 0 int b 0 int i pragma omp parallel for shared v private i reduction max maximo
  • 值类型数组如何存储在 .NET 对象堆中?

    在 NET中 诸如int之类的值类型对象存储在内存中 引用类型对象需要为引用和对象单独分配内存 并且对象存储在 NET对象堆中 而Array是在堆中创建的 那么int 等值类型的数组如何存储在堆中呢 这是否意味着值类型对象可以存储在堆中而无
  • 除非我在开​​始时声明变量,否则为什么会收到“错误未声明的标识符”?

    当我有以下情况时 include stdafx h include
  • 文件已创建但无法写入

    我的计划 检查Settings txt 文件 如果该文件不存在 则创建文本并自动写入其中 如果 Settings txt 文件已存在 请忽略 不要创建或写入现有文件 我的问题 当文件不存在时 Settings txt 文件会创建 但它是空的
  • 对指针列表进行排序

    我再次发现自己在 C 中的一些非常简单的任务上失败了 有时我希望我能从 Java 中的 OO 中学到所有知识 因为我的问题通常是从像 Java 一样思考开始的 无论如何 我有一个std list
  • ofstream::operator<<(streambuf) 是一种复制文件的缓慢方法

    我需要一种跨平台 无需外部库的复制文件的方式 在我的第一遍中 我想出了 省略错误处理 char buffer LEN ifstream src srcFile ios in ios binary ofstream dest destFile
  • llvm clang 编译器上的dynamic_cast失败

    我看到一个奇怪的失败dynamic cast正在返回NULL在 clang 编译器上 但相同的代码可以在 gcc 环境下运行 您能否指出根本原因是什么 之间可能有什么区别dynamic cast关于 llvm 和 gcc 我正在使用两个编译
  • 使用 C# 在 XML 文档中查找特定值的好方法是什么?

    我正在调用 Oracle 公开的 WebService 它接受 ItemID 的输入并向我返回相应的 Item Number 我想获取从响应中包含的 XML 返回的项目编号 XML 看起来像这样
  • 基于 C++ 组件的类

    Hi 我正在使用容器编写一个基于组件的类 但是在考虑了许多不同的方法之后 我找不到真正符合我想要的方法 这是总体思路的一个例子 我已经写的代码 Abstract class Component class Component public
  • 访问控制器类中的 appsettings.json 值

    无法弄清楚如何读取startup cs之外的appsettings json值 例如 我想做的是在 Layout cshtml 中 从配置中添加站点名称 例如 ViewData SiteName Configuration GetValue
  • 是否可以使用 struct stat 描述符获取和设置文件名?

    是否可以在获取或设置 重命名 文件名时给出文件的绝对路径 并将 struct stat 实例作为 lstat 函数的参数 正如我在文档结构中发现的那样 struct stat dev t st dev ID of device contai
  • 在方法签名中使用 new 关键字通常只是为了可读性吗?

    我读过关于new关键词在方法签名中并看到了下面的例子this https stackoverflow com questions 1014295 c sharp new keyword in method signature发帖了 但还是不
  • 实现多个接口的 Service Fabric Actor 接口

    我正在构建一个应用程序 其中有多个不同的参与者类型 这些参与者类型对于某些不同的数据对象具有相同类型的行为 CRUD 为了更轻松地创建处理此问题的代码 我尝试创建一个这些参与者可以实现的接口 这意味着我有一个看起来像这样的参与者界面 pub
  • 类型与创建 CLR 存储过程不匹配

    我在程序集中有一个如下所示的方法 namespace MyNameSpace public class MyClass Microsoft SqlServer Server SqlProcedure public static void M
  • 找出用户属于哪些组

    我有一个刚刚创建的 Windows 用户帐户 以 XYZ 为例 此 XYZ 属于我在计算机管理 gt 本地用户和组中创建的用户组和自定义组 因此 在属性中我看到该用户属于 2 个组 现在我想获取这些组并显示它们 有什么建议么 我已经这样做了
  • 系统.安全.加密与 PCLCrypto

    我们正在删除系统中的许多共享功能并将其移植到 PCL 库中 我在使用 PCLCrypto 时遇到问题 我正在获取数据库中的一些现有数据 并尝试使用相同的算法对其进行解密 我得到了值 但末尾有 16 个额外字节 这些字节都是垃圾 参见下面的代

随机推荐

  • 在 Shiny 中同步两个 Highchart - 输入更改时不调用 JS

    相关于上一篇文章我提出 我想在 R Shiny 中的一个单独但同步的 Highcharter 图中调用单击事件时 在两个方向上更新一个 Highcharter 图中的点以更改颜色 我能够在 R Shiny 中同步两个 Highcharter
  • 使用 python 替换特定行中的字符串

    我正在编写一个 python 脚本来替换具有特定扩展名 seq 的目录中每个文本文件中的字符串 替换的字符串只能来自每个文件的第二行 输出是一个新的子目录 称为 clean 其文件名与原始文件相同 但带有 clean 后缀 输出文件包含与原
  • 强制 CEFSharp 下载而不显示对话框

    我有一个带有 CEFSharp 的 WPF 应用程序 它是一个 Web 浏览器 当我单击下载链接时 它会显示一个对话框并询问我要将文件保存在哪里 如何强制 Web 浏览器下载任何文件而不显示对话框 我想创建一些像谷歌浏览器这样的东西 因此
  • Python 中昂贵对象的智能缓存

    我有一个按顺序排列的图像目录 通常 我的代码将使用图像的连续子集 例如图像 5 10 中的数据 访问这些图像的简单选项是 使用在需要时加载图像并读取我的数据 例如像素值 的方法创建一个包装对象 这几乎没有内存开销 但速度会很慢 因为每次都需
  • 当我尝试保存新记录或更新现有记录时,EF 返回 0000-0000-0000-xxx 作为 Guid?

    我在我的 C 项目中使用 EF4 我面临的问题是 当我尝试保存记录时 出现主键违规 并且 PK 值为 0000 0000 0000 xxx 据我猜测 EF 无法识别 IsIdentity 标志并生成 guid 值 在我的表的 SQL Ser
  • OpenCV 中的 const Mat 引用有意义吗?

    在下面的函数中 foo const Mat img img可以在函数中进行更改 甚至编译器不会发出警告 为什么 是不是意味着const Mat参考没有任何意义 这是因为 Mat 包含指向实际图像数据的指针 const 仅适用于 Mat 对象
  • JavaFX安装

    我是 Java 新手 目前正在阅读文本并学习 我已经在我的系统中安装了JDK opt目录 在 Kubuntu 上工作 我还安装了 openjfx opt 由于我使用了终端 每当我想编译或运行涉及 JavaFX 模块的内容时 我都会使用 ja
  • 如何获取“TYPE_3BYTE_BGR”图像的 RGB 值?

    我有一张图片TYPE 3BYTE BGR我想把它转换成TYPE INT RGB 尽管我已经搜索过 但我还没有找到执行此操作的方法 我想逐像素转换图像 然而 似乎BufferedImage getRGB i j 不起作用 如何获取 type
  • Verilog HDL 循环语句错误:具有非常量循环条件的循环必须终止

    我对 Verilog 完全陌生 对于我在大学学习的课程 我必须很快了解它的很多内容 我正在摆弄我的 Altera DE2 板和 quartis2 并了解其细节 我正在尝试制作一个通过开关打开和关闭的计数器 到目前为止 计数器根据按键进行计数
  • 扩展 ANTLR3 AST

    使用 ANTLR2 您可以在语法定义文件中定义如下内容 options language CSharp namespace Extended Tokens tokens TOKEN
  • MongoDB Spring 数据 Criteria.all

    在 mongo 控制台中我有 gt db test find id ObjectId 515afcfedba6a529520becfa array key one value 1 key two value 2 id ObjectId 51
  • 将消息时间戳与颤动消息文本字段的尾随右侧右对齐

    正如我在上一篇关于该主题的文章中提到的 多行颤动文本字段占据了所有灵活空间 右填充丑陋 我是一个有点完美主义者 不幸的是 我的 flutter layout fu 并不像我的野心那么强烈 我正在创建一个消息应用程序 并且正在努力向消息框添加
  • 使用 R 加速循环和条件

    我想在 R 中加速这段代码 输入是一个包含整数的 3x3x3 数组 并且基于邻居 如果它们为零 则将它们替换为相应的数字 输出是包含新值的数组 mask roi Start here list neig array 0 dim c 3 3
  • 方向更改时导航到另一个页面

    我将在以下实例中解释我要做什么 我有两个页面 MainPage xaml 方向 Portrait 和 LandscapeLeft xaml 方向 LandscapeLeft 我想从MainPage xaml to LandscapeLeft
  • 无法继续 git rebase

    这是我尝试过的 希望有人能花点时间看看这个并提出一些建议 谢谢 编辑 我相信我已经回答了我自己的问题 https stackoverflow com a 12760672 906794 克隆我的存储库 git clone leoj3n ro
  • 如何在 apache HttpClient 上设置 TLS 版本

    如何更改 HttpClient 上支持的 TLS 版本 我正在做 SSLContext sslContext SSLContext getInstance TLSv1 1 sslContext init keymanagers toArra
  • Rails Devise - 使用关联模型注册用户

    我遇到了一些关于这个主题的问题 但似乎都过时的或者只是糟糕的编码实践 问题 我正在注册用户作为结账流程的一部分 我想在用户注册时收集他们的地址 我有一个用户模型和一个地址模型 我似乎无法弄清楚如何正确覆盖 Devise 的注册控制器以允许附
  • F# 中的 2D 数组上的 Foreach 使编译器认为迭代值是对象类型。为什么?

    我在这个看似简单的问题上遇到了麻烦 let xs Array2D init 3 3 fun j i gt j 3 i printfn O xs GetType prints System Int32 for v in xs do print
  • 使用 JQuery/JavaScript 表示 html 表中各种数组中的字符

    我在 Hangman 游戏中通过 J Query 以图形方式表示一些数据时遇到了一些问题 现在我正在研究 play space 函数的最后一部分 以考虑是否有多个正确猜测的数据单词中的字母并显示该字母的所有实例 我创建了一个函数来循环遍历由
  • fscanf 是否可以返回零并同时消耗输入?

    是否有可能fscanf消耗输入并同时返回零 例如 如果我写 int res int k fscanf f d res 并检查一下k 0 我可以确定下一次调用fscanf在同一个文件上f将在调用之前文件所在的同一位置继续fscanf 中概述的