当 scanf!=EOF 或 scanf==1 时?

2023-11-24

其他条件不变的情况下(格式良好的数据,良好的缓冲实践等等),是否有理由我更喜欢在返回时循环scanf是 1,而不是!EOF?我可能在某处读过这篇文章,或者其他什么,但我也可能有错。其他人怎么看?


scanf返回成功转换的项目数...或错误时返回 EOF。因此,请按照有意义的方式对条件进行编码。

scanfresult = scanf(...);
while (scanfresult != EOF) /* while scanf didn't error */
while (scanfresult == 1) /* while scanf performed 1 assignment */
while (scanfresult > 2) /* while scanf performed 3 or more assignments */

人为的例子

scanfresult = scanf("%d", &a);
/* type "forty two" */
if (scanfresult != EOF) /* not scanf error; runs, but `a` hasn't been assigned */;
if (scanfresult != 1) /* `a` hasn't been assigned */;

编辑:添加了另一个更人为的示例

int a[5], b[5];
printf("Enter up to 5 pairs of numbers\n");
scanfresult = scanf("%d%d%d%d%d%d%d%d%d%d", a+0,b+0,a+1,b+1,a+2,b+2,a+3,b+3,a+4,b+4);
switch (scanfresult) {
case EOF: assert(0 && "this didn't happen"); break;
case 1: case 3: case 5: case 7: case 9:
    printf("I said **pairs of numbers**\n");
    break;
case 0:
    printf("What am I supposed to do with no numbers?\n");
    break;
default:
    pairs = scanfresult / 2;
    dealwithpairs(a, b, pairs);
    break;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当 scanf!=EOF 或 scanf==1 时? 的相关文章

  • IIS应用程序池回收+quartz调度

    我正在 IIS 7 5 上运行一个 Web 应用程序 它需要偶尔回收 否则内存使用情况会失控 这是我正在研究的问题 当它回收时 它实际上不会运行 直到另一个请求到来 而quartz不会运行 有没有办法让IIS在回收应用程序池后立即自动启动1
  • json.net自定义jobject反序列化

    我正在尝试使用 JsonConvert DeserializeObject string 将字符串反序列化为可与动态一起使用的 jobject 来动态访问 json 文档 但是我想避免知道文档的大小写 以便我可以输入 dynamic doc
  • 为什么 F# 的默认集合是排序的,而 C# 的不是?

    当从 C 世界迁移到 F 最惯用的可能 思维方式时 我发现了这个有趣的差异 在 C 的 OOP mutable 世界中 默认的集合集合似乎是HashSet https learn microsoft com en us dotnet api
  • 如何在另一个应用程序中挂钩 api 调用

    我正在尝试挂钩另一个应用程序的 ExtTextOut 和 DrawTextExt GDI 方法调用 我知道我需要使用 GetProcAddress 来查找 gdi32 dll 中那些方法的地址 并用我的函数的地址覆盖我想要挂钩的进程中的地址
  • 在 OnModelCreating 期间设置列名称

    Issue 我目前正在尝试通过设置的属性为我的表及其列添加前缀 我正在使用实体框架核心 我已经正确地为表名添加了前缀 但我似乎无法弄清楚列的前缀 我有一种感觉 我需要使用反射 我已经留下了我的 可能很糟糕的 反思尝试 有人有办法在实体中设置
  • C++ 长 switch 语句还是用地图查找?

    在我的 C 应用程序中 我有一些值充当代表其他值的代码 为了翻译代码 我一直在争论使用 switch 语句还是 stl 映射 开关看起来像这样 int code int value switch code case 1 value 10 b
  • 在现代 C++ 中,临时生命周期延长何时有用?

    在 C 中 您可以将函数的返回值 返回值 而不是引用 绑定到 const 引用 并且代码仍然有效 因为该临时对象的生命周期将延长到作用域末尾 例如 std string get string return abc void f const
  • CSharpRepl emacs 集成?

    我碰巧知道莫诺CSharpRepl http www mono project com CsharpRepl 是否有 emacs csharp 模式使用它在一个窗口中运行 REPL 并像 python 模式一样在另一个窗口中编译 运行 C
  • 从模板切换传递的类型

    在 C 中是否可以检查传递给模板函数的类型 例如 template
  • 是否存在指向不同类型的指针具有不同大小的平台?

    C 标准允许指向不同类型的指针具有不同的大小 例如sizeof char sizeof int 是允许的 但是 它确实要求如果将指针转换为void 然后转换回其原始类型 它必须与其原始值进行比较 因此 从逻辑上来说 sizeof void
  • 增强精神、递归和堆栈溢出

    为什么下面的代码在运行时崩溃 它会给出堆栈溢出错误 include
  • 如何对 NServiceBus.Configure.WithWeb() 进行单元测试?

    我正在构建一个 WCF 服务 该服务接收外部 IP 上的请求并将其转换为通过 NServiceBus 发送的消息 我的单元测试之一调用Global Application Start 它执行应用程序的配置 然后尝试将 Web 服务解析为 验
  • 如何在三个 IEnumerable 上使用 Zip [重复]

    这个问题在这里已经有答案了 可能的重复 使用 Linq 从 3 个集合创建项目 https stackoverflow com questions 5284315 create items from 3 collections using
  • 在 asp.net MVC 中使用活动目录进行身份验证

    我想使用活动目录对我的 asp net mvc 项目中的用户进行身份验证 在网上冲浪了几个小时后 我没有找到任何对我有用的东西 我已经看到了所有结果 但什么也没有 我尝试按照许多帖子的建议编辑我的 web config 如果有人可以帮助我提
  • 如何从 Rx Subscribe 回调异步函数?

    我想回调 Rx 订阅中的异步函数 例如 像那样 public class Consumer private readonly Service service new Service public ReplaySubject
  • .NET 4 的条件编译[重复]

    这个问题在这里已经有答案了 可能的重复 条件编译和框架目标 https stackoverflow com questions 2923210 c sharp conditional compilation and framework ta
  • CUDA 8 编译错误 -std=gnu++11

    我正在尝试转换一些代码以使用 CUDA 并且我认为我遇到了兼容性问题 我们使用CMake 这些是我使用的 gcc 和 CUDA 版本 gcc version gcc Ubuntu 5 4 0 6ubuntu1 16 04 5 5 4 0 2
  • 来自 3rd 方库的链接器错误 LNK2019

    我正在将旧的 vc 6 0 应用程序移植到 vs2005 我收到以下链接器错误 我花了几天时间试图找到解决方案 错误LNK2019 无法解析的外部符号 imp 创建AwnService 52 在函数 public int thiscall
  • 如何将 SQL“LIKE”与 LINQ to Entities 结合使用?

    我有一个文本框 允许用户指定搜索字符串 包括通配符 例如 Joh Johnson mit ack on 在使用 LINQ to Entities 之前 我有一个存储过程 该存储过程将该字符串作为参数并执行以下操作 SELECT FROM T
  • 为什么匹配模板类上的部分类模板特化与没有模板匹配的另一个部分特化不明确?

    这个问题可能很难用标题中的句子来描述 但这里有一个最小的例子 include

随机推荐

  • Angular2 - 成功登录后重定向到调用网址

    我已经使用 Angular 2 1 0 启动并运行了我的应用程序 路由通过路由器守卫 canActivate 进行保护 当将浏览器指向 localhost 8080 customers 等受保护区域时 我会像预期一样重定向到我的登录页面 但
  • Java 9,ClassLoader.getSystemClassLoader 的兼容性问题

    以下代码将 jar 文件添加到构建路径 它在 Java 8 中工作正常 但是 它在 Java 9 中抛出异常 该异常与 URLClassLoader 的强制转换有关 有什么想法可以解决这个问题吗 最佳解决方案是将其编辑为适用于 Java 8
  • 将 location.pathname 和 location.search 设置在一起?

    我想做类似的事情 location pathname abc location search name test 它最终被重定向到 abc 我希望重定向发生 abc name test 只需设置location or location hr
  • 如何将图像大小缩小到1MB

    我希望我的应用程序上传图像没有大小限制 但在代码中 如果图像大小超过 我想将图像大小调整为 1MB 我尝试了很多方法 但找不到满足上面提到的要求的任何代码 这一次 我尝试过这个 public void scaleDown int width
  • jQuery 在选定的收音机上添加/删除 css 类

    我已经在这里阅读了一些解决方案 但我的问题非常不同 这些解决方案不起作用 基本上 如果单选按钮被选中 则向父 div 添加一个 css 类 如果未选中无线电 请删除 css 类 听起来很简单 我有多个单选按钮组 因此换句话说 一次会选择多个
  • PIC16 C 编译器

    我正在为 PIC 16 系列寻找一个在 Windows 上运行的优秀 C 编译器 几个同事使用bknudc但有些人似乎不喜欢它 显然你无法有效地使用链接器 事实证明最好的方法是将所有代码设置在包含文件中 SDCC看起来不错 但看起来它仍处于
  • dart,单元测试私有方法

    我有一个相当大的库 但只公开了一个非常小的 API 以方便新用户使用和学习 我想以这种方式保留我的库 但我也想确保我有尽可能多的单元测试覆盖率 我希望能够直接对我的所有课程进行单元测试 但据我所知我可以仅对库的公共 API 进行单元测试 当
  • 使用 Qunit 断言函数抛出异常

    我是 Qunit 和单元测试的新手 我试图弄清楚测试以下功能的内容和方法 目前它没有做太多事情 但我想断言 如果我传递错误的值 则会抛出错误 function attrToggle panel attr use strict if pane
  • 字符串的 OCaml 函数参数模式匹配

    我尝试传递一个字符串来获取反转的字符串 为什么我不能这样做 let rec reverse x match x with gt e s gt reverse s e 编译器说这是一个语法错误 我不能用吗 解构参数 原因是字符串不像列表那样表
  • Visual C++ 中的 Pthread

    我正在 Windows 中尝试多线程 想知道是否应该 use Win32 API use Windows 的 POSIX 线程 如果我尝试在不同平台上开发此类应用程序 学习 Pthreads 将很有用 但如果不学习 Win32 API 我会
  • 在 Android 嵌套 PreferenceScreen 上显示向上/后退按钮?

    我有一个两级 PreferenceScreen
  • 带有等号和空格的 Python 子进程参数

    我正在尝试运行命令subprocess check output不使用shell True关键字参数 我的命令是这样的 command parameter something with spaces 有了这个 subprocess chec
  • 按钮的 jQuery Datatable DOM 定位

    我刚刚将 jQuery Datatable 版本升级到 1 10 然后我尝试删除其已退役的插件 例如带有 Button 扩展名的 Colvis 和 Tabletools 这里一切正常 但对我来说问题是 我无法将 Colvis 按钮与 Tab
  • 我的自定义异常应该继承与它们类似的异常还是仅从 Exception 继承?

    我正在我的应用程序中创建一些自定义异常 如果我在测试参数状态后抛出异常 或者在测试 int 在正确范围内后抛出异常 那么我的异常应该继承 ArgumentException 和 IndexOutOfRangeException 还是应该继承
  • 运行 GAE devserver 时,jsessionID 会附加到 url

    由于某种原因 字符串如下 jsessionid SESSION HERE当我访问部署到 GAE 开发服务器的应用程序时 它会被添加到网址中 这会让事情变得混乱 因为对于某些 url 来说 它根本无法解析为 GET 参数 有时它最终会出现这样
  • 可变长度 rnn 填充和屏蔽填充梯度

    我正在构建一个 rnn 并使用 sequene length 参数来提供批次中序列的长度列表 并且批次中的所有序列都填充到相同的长度 然而 在进行反向传播时 是否可以屏蔽掉与填充步骤相对应的梯度 从而使这些步骤对权重更新的贡献为 0 我已经
  • 如何用另一个 JPanel 替换 JPanel

    我想用 JFrame 中的另一个 Jpanel 替换 Jpanel 我已经搜索并尝试了我的代码 但什么也没发生 这是我的代码 public class Frame extends JFrame private Container conta
  • HttpClient 和 PushStreamContent

    我将 PushStreamContent 与 REST API ASP NET Web API 结合使用 效果非常好 HttpClient 可以在服务器处理完整请求之前请求资源并获取 HTTP Response 服务器仍然写入推送流 作为
  • 在 Ruby 中查找多个正则表达式匹配的模式和位置

    这应该是一个简单的问题 但我找不到任何相关内容 给定 Ruby 中的正则表达式 对于每个匹配 我需要检索匹配的模式 1 2 但我还需要匹配的位置 我知道 运算符给我第一个匹配的位置 而string scan regex 给我所有匹配的模式
  • 当 scanf!=EOF 或 scanf==1 时?

    其他条件不变的情况下 格式良好的数据 良好的缓冲实践等等 是否有理由我更喜欢在返回时循环scanf是 1 而不是 EOF 我可能在某处读过这篇文章 或者其他什么 但我也可能有错 其他人怎么看 scanf返回成功转换的项目数 或错误时返回 E