带有字符类的 fscanf

2024-04-08

假设我有一个文件dog.txt

The quick brown fox jumps over the lazy dog.

我可以像这样从文件中读取

# include <stdio.h>
int main(){
  char str[10];
  FILE *fp;
  fp = fopen("dog.txt", "r");
  fscanf(fp, "%[ABCDEFGHIJKLMNOPQRSTUVWXYZ]", str);
  printf("%s\n", str);
  return 0;
}

程序将输出T。然而,我可以使用 POSIX 字符类,而不是列出所有字母,例如[:upper:] ?


不,没有便携式方法可以做到这一点。某些实现允许您使用字符范围,例如%[A-Z],但是 C 标准不保证这一点。 C99 §7.19.6.2/12 是这样说的[转换说明符(添加强调):

转换说明符包括所有后续字符format字符串,直到并包括匹配的右括号 (])。括号之间的字符(scanlist) 组成扫描集,除非左括号后面的字符是扬抑符 (^),在这种情况下,扫描集包含未出现在扫描列表中扬抑符和右括号之间的所有字符。如果转换说明符开头为[] or [^],右括号字符在扫描列表中,下一个右括号字符是结束规范的匹配右括号;否则第一个右括号字符是结束规范的字符。If a -字符在扫描列表中,并且不是第一个,也不是第二个,其中第一个字符是^,也不是最后一个字符,该行为是实现定义的。

The POSIX.1-2008 说明 http://pubs.opengroup.org/onlinepubs/9699919799/functions/scanf.html具有几乎相同的措辞(甚至在意外冲突的情况下遵循 ISO C 标准),因此在使用 POSIX 系统时,在这种情况下没有额外的保证。

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

带有字符类的 fscanf 的相关文章

  • 在 C++ 中分割大文件

    我正在尝试编写一个程序 该程序接受一个大文件 任何类型 并将其分成许多较小的 块 我想我已经有了基本的想法 但由于某种原因我无法创建超过 12 kb 的块大小 我知道谷歌等上有一些解决方案 但我更感兴趣的是了解这个限制的根源是什么 然后实际
  • 在 OpenCL 中将函数作为参数传递

    是否可以在 OpenCL 1 2 中将函数指针传递给内核 我知道可以用C实现 但不知道如何在OpenCL的C中实现 编辑 我想做这篇文章中描述的同样的事情 在 C 中如何将函数作为参数传递 https stackoverflow com q
  • 捕获 foreach 条件中抛出的异常

    我有一个foreach在 foreach 本身的条件下循环期间中断的循环 有没有办法try catch抛出异常然后继续循环的项 这将运行几次 直到异常发生然后结束 try foreach b in bees exception is in
  • 通信对象 System.ServiceModel.Channels.ServiceChannel 不能用于通信

    通信对象System ServiceModel Channels ServiceChannel 无法用于通信 因为它处于故障状态 这个错误到底是什么意思 我该如何解决它 您收到此错误是因为您让服务器端发生 NET 异常 并且您没有捕获并处理
  • 使用实体框架从集合中删除项目

    我正在使用DDD 我有一个 Product 类 它是一个聚合根 public class Product IAggregateRoot public virtual ICollection
  • 在 C++11 中省略返回类型

    我最近发现自己在 C 11 模式下的 gcc 4 5 中使用了以下宏 define RETURN x gt decltype x return x 并编写这样的函数 template
  • try-catch 中未处理的异常

    try list from XElement e in d Descendants wix File where e Attribute Name Value Contains temp Name e Parent Parent Attri
  • 在 Xcode4 中使用 Boost

    有人设置 C Xcode4 项目来使用 Boost 吗 对于一个简单的 C 控制台应用程序 我需要在 Xcode 中设置哪些设置 Thanks 用这个来管理它 和这个
  • TextBox 焦点的 WinForms 事件?

    我想添加一个偶数TextBox当它有焦点时 我知道我可以用一个简单的方法来做到这一点textbox1 Focus并检查布尔值 但我不想那样做 我想这样做 this tGID Focus new System EventHandler thi
  • VS30063:您无权访问 https://dev.azure.com

    我正在尝试在 asp net core 2 1 mvc 应用程序中使用以下代码连接 Azure DevOps Uri orgUrl new Uri https dev azure com xxxxx String personalAcces
  • 如何用 kevent() 替换 select() 以获得更高的性能?

    来自Kqueue 维基百科页面 http en wikipedia org wiki Kqueue Kqueue 在内核和用户空间之间提供高效的输入和输出事件管道 因此 可以修改事件过滤器以及接收待处理事件 同时每次主事件循环迭代仅使用对
  • 组合框项目为空但数据源已满

    将列表绑定到组合框后 其 dataSource Count 为 5 但组合框项目计数为 0 怎么会这样 我习惯了 Web 编程 而且这是在 Windows 窗体中进行的 所以不行combo DataBind 方法存在 这里的问题是 我试图以
  • UWP 无法在两个应用程序之间创建本地主机连接

    我正在尝试在两个 UWP 应用程序之间设置 TCP 连接 当服务器和客户端在同一个应用程序中运行时 它可以正常工作 但是 当我将服务器部分移动到一个应用程序并将客户端部分移动到另一个应用程序时 ConnectAsync 会引发异常 服务器未
  • 过期时自动重新填充缓存

    我当前缓存方法调用的结果 缓存代码遵循标准模式 如果存在 则使用缓存中的项目 否则计算结果 在返回之前将其缓存以供将来调用 我想保护客户端代码免受缓存未命中的影响 例如 当项目过期时 我正在考虑生成一个线程来等待缓存对象的生命周期 然后运行
  • gdb查找行号的内存地址

    假设我已将 gdb 附加到一个进程 并且在其内存布局中有一个文件和行号 我想要其内存地址 如何获取文件x中第n行的内存地址 这是在 Linux x86 上 gdb info line test c 56 Line 56 of test c
  • 同时从多个流中捕获、最佳方法以及如何减少 CPU 使用率

    我目前正在编写一个应用程序 该应用程序将捕获大量 RTSP 流 在我的例子中为 12 个 并将其显示在 QT 小部件上 当我超过大约 6 7 个流时 问题就会出现 CPU 使用率激增并且出现明显的卡顿 我认为它不是 QT 绘制函数的原因是因
  • 如何在 GCC 5 中处理双 ABI?

    我尝试了解如何克服 GCC 5 中引入的双重 ABI 的问题 但是 我没能做到 这是一个重现错误的非常简单的示例 我使用的GCC版本是5 2 如您所见 我的主要函数 在 main cpp 文件中 非常简单 main cpp include
  • 为什么 Ajax.BeginForm 在 Chrome 中不起作用?

    我正在使用 c NET MVC2 并尝试创建一个 ajax 表单来调用删除数据库记录 RemoveRelation 的方法 删除记录的过程正在按预期进行 删除记录后 表单应调用一个 JavaScript 函数 从视觉效果中删除该记录 Rem
  • 如何确定母版页中正在显示哪个子页?

    我正在母版页上编写代码 我需要知道正在显示哪个子 内容 页面 我怎样才能以编程方式做到这一点 我用这个 string pageName this ContentPlaceHolder1 Page GetType FullName 它以 AS
  • 如何使用 std::array 模拟 C 数组初始化“int arr[] = { e1, e2, e3, ... }”行为?

    注意 这个问题是关于不必指定元素数量并且仍然允许直接初始化嵌套类型 这个问题 https stackoverflow com questions 6111565 now that we have stdarray what uses are

随机推荐

  • 将剪贴板中的代码粘贴到多个输入字段中

    我一直在寻找 Vanilla Javascript 解决方案 将代码复制粘贴到多个输入字段中 我在互联网上找到了解决方案 但都是基于 jQuery 的 这是 jQuery 解决方案 https stackoverflow com quest
  • C#中线程的合理使用?

    作为大型自动化流程的一部分 我们正在调用第三方 API 该 API 执行一些调用另一台计算机上的服务的工作 我们最近发现 当另一台计算机不可用时 API 调用在尝试连接到远程服务器时有时会中断长达 40 分钟 我们使用的 API 没有提供指
  • 带条件的数字序列[重复]

    这个问题在这里已经有答案了 我有一个大 data frame 我想生成一个新列 称为 Seq 其中有一个顺序值 每次不同列发生更改时都会重新启动 下面是 data frame 省略了列 和名为 Seq 的新列的示例 正如您所看到的 有一个连
  • Cypress:如何模拟键盘(CTRL/SHIFT)操作

    如图所示 我在树中有这些元素 如果我按键盘中的 CTRL 并单击这些文本 我可以选择多个元素 它会提供执行某些操作的链接 使用 cypress 有什么方法可以实现此目的吗 我知道如果它是选择 我可以使用选择 在我的情况下 这些只是 ul 另
  • 如何将现有的 Block Blob 转换为 PageBlob

    我使用 CloudBerry 资源管理器将 VM Iaas 磁盘文件复制到另一个存储 但是当我完成复制后 我发现新创建的Blob是一个Block Blob 而不是Page Blob 该工具不会复制源 Blob 类型 页面 Blob 有没有办
  • java.lang.SecurityException 与 javax.servlet.servlet-api jar 的两个冲突版本

    我正在努力解决我无法解决的 Java Maven Jetty 问题 我有一个正确启动的 Java Jetty 服务器 但一旦向它发送 HTTP 请求 它就会中止显示此堆栈跟踪 2013 09 30 08 40 24 534 qtp29724
  • 虚拟构造函数习惯和工厂设计

    在虚拟构造函数习惯用法中 有一些虚拟函数可以使用虚拟函数返回新对象或对象的副本 但是要以多态方式调用这些虚函数 您必须使用实际的构造函数创建该类的对象 在设计模式上下文中 这意味着客户端在使用多态对象创建方式之前知道对象的类型 客户端不必知
  • java数组对象的所有索引都具有相同的值

    我有一个错误 当我使用我在类中创建的打印方法时 我的数组返回所有相同的值 我不知道为什么 它一定是不同的值 有什么建议吗 这是代码 主要类别 public class KmeanES param args the command line
  • 通过 javascript API 保存和恢复 Tableau 图形的当前视图状态

    问题 如何通过 javascript API 存储并随后检索 Tableau 视图的自定义状态 描述 我正在开发一个网站 目前允许任何用户将一组 Tableau 视图协作为类似 PowerPoint 的在线演示文稿以供以后使用 在我们当前的
  • 如何从当前文件路径向上导航一个文件夹?

    我需要从文件的当前路径向上导航一个文件夹 并在那里保存相同的文件 如何从目录路径中剥离一级 谢谢你 C Users stacy zim AppData Local Temp ICLocal e53486af 7e5e 4c54 b9dc d
  • 在 C# 中制作公式将美元金额转换为面额

    我正在编写一个程序 将任何输入金额转换为二十 十 五和个的面额 这是我遇到的问题 int twenties dollar 20 int tens twenties 2 int fives tens 2 int ones fives 5 美元
  • 第三方 Oracle .NET 提供商的比较

    我正在清理 Oracle 数据库应用程序 在此应用程序中 性能和易于访问是最重要的考虑因素 它必须不妨碍您 让您以自由且不受限制的方式获取数据 这样做的同时 必须very快速地 当它不能很快时 它必须是多线程的 这样才不会冻结系统 所有这些
  • 如何使用 vi 编辑器在 KornShell 命令行中自动完成

    在 KornShell ksh 上AIX UNIX 版本 5 3将编辑器模式设置为 vi 使用 set o vi 在 shell 命令行中按什么键可以自动完成文件或目录名 ESC 至少在 AIX4 2 上工作得很好 我注意到的一件事是它只自
  • 如何找到 OpenGL es 2.0 顶点着色器专业版中所有制服的列表

    我正在尝试学习如何对顶点着色器进行编程 在苹果的示例项目中 他们有一行来设置 glUniform1f uniforms UNIFORM TRANSLATE Glfloat transY 然后这个值被用在 value passt in f g
  • Zend_Framework- 在哪里放置 $_GET 和 $_POST (HTTP 请求)处理?

    我最近读过这个帖子 http blog astrumfutura com archives 373 The M in MVC Why Models are Misunderstood and Unappreciated html这导致了一系
  • 如何获取 DataGridView 控件上滚动条的大小?

    如何获取控件 例如 DataGridView 上显示的水平滚动条的高度和 或垂直滚动 条的宽度 Use SystemInformation HorizontalScrollBarHeight SystemInformation Vertic
  • Ruby on Rails 警告“ruby 正在以不安全的方式加载 libcrypto”

    当我在终端上运行 Rails 命令 例如创建模型 时 这是我收到的错误 WARNING Users my mac username rvm rubies ruby 2 5 3 bin ruby is loading libcrypto in
  • PowerShell:在 cmdlet 之后连接字符串与变量

    我经常发现自己必须在 cmdlet 之后连接字符串和变量 例如 New Item archive path logfile txt type file 如果我尝试运行此命令 PowerShell 会抛出以下错误 New Item 找不到接受
  • 使用 XSD 进行 XML 验证时出现无效子元素错误,我不知道为什么?

    使用以下内容我总是收到无效子元素错误 我是 XML 的新手 我一直在网上寻找并尝试解决这个问题 但没有运气 我有另一个 XSD 正在验证提交到我的应用程序的 XML 它工作得很好 但它使用的是属性而不是元素 无法使用 XSD 中的元素来验证
  • 带有字符类的 fscanf

    假设我有一个文件dog txt The quick brown fox jumps over the lazy dog 我可以像这样从文件中读取 include