如何从文件中读取特定格式的数据?

2023-11-24

我应该从类似于此格式的文件中读取输入和参数:

Add  id:324  name:"john" name2:"doe" num1:2009 num2:5 num2:20

问题是我不允许使用 fgets。我尝试使用 fscanf 但不知道如何忽略“:”并分隔字符串“name:”john“”。


如果您确定输入文件将采用格式良好、非常具体的格式,fscanf()始终是一个选择,并且会为您做很多工作。下面我用的是sscanf()而只是为了说明而无需创建文件。您可以更改要使用的呼叫fscanf()为您的文件。

#define MAXSIZE 32
const char *line = "Add  id:324  name:\"john\" name2:\"doe\" num1:2009 num2:5 num3:20";
char op[MAXSIZE], name[MAXSIZE], name2[MAXSIZE];
int id, num1, num2, num3;
int count =
    sscanf(line,
        "%s "
        "id:%d "
        "name:\"%[^\"]\" "  /* use "name:%s" if you want the quotes */
        "name2:\"%[^\"]\" "
        "num1:%d "
        "num2:%d "
        "num3:%d ", /* typo? */
        op, &id, name, name2, &num1, &num2, &num3);
if (count == 7)
    printf("%s %d %s %s %d %d %d\n", op, id, name, name2, num1, num2, num3);
else
    printf("error scanning line\n");

Outputs:

添加 324 约翰·多伊 2009 5 20

否则,我会手动解析一次读取一个字符的输入,或者如果出于某种原因使用它,将其放入缓冲区中fgets()不被允许。恕我直言,缓冲总是比不缓冲更容易。然后你可以使用其他功能,例如strtok()以及进行解析等操作。

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

如何从文件中读取特定格式的数据? 的相关文章

随机推荐

  • 获取尚未应用的类的 CSS 属性值

    在 jQuery 中 我可以使用以下方法获取选择器的 CSS 属性值css方法并传递属性名称 例如 myElement css backgroundImage 我的问题是 如何从一个类中获取 css 属性值not尚未应用于any元素 如同
  • 如何找回我的 MySQL 用户名和密码?

    我丢失了 MySQL 用户名和密码 我该如何取回它 停止 MySQL 进程 使用 skip grant tables 选项启动 MySQL 进程 使用 u root 选项启动 MySQL 控制台客户端 列出所有用户 SELECT FROM
  • 使用 System.Text.Json 将 IConfiguration 序列化回 Json

    我将一些 IConfiguration 作为 json 存储在我的 sqlserver 数据库中 这样我就可以将它们绑定到一些已经构造的类以提供动态设置 在某些时候 我可能会在运行时更改新的绑定属性 然后更新数据库 问题是 当我需要时 该类
  • 用于返回多个安全组成员的 PowerShell 脚本

    我需要使用 PowerShell 返回多个安全组的所有成员 很方便地 所有组都以相同的字母开头 我可以使用以下代码返回所有相关安全组的列表 Get ADGroup filter Name like ABC Select Object Nam
  • 使用空数组初始化哈希意外行为[重复]

    这个问题在这里已经有答案了 我想初始化一个Hash与一个空的Array对于每个新键 将某个值推送到该数组 这是我尝试做的 a Hash new gt a 1 lt lt asd gt asd a gt 预期输出为a was 1 gt asd
  • Emacs 远程 shell

    我倾向于在 emacs 中运行 shell 但是当我使用它来 ssh 到另一台计算机时 这会破坏制表符补全 有没有办法来解决这个问题 Try M x cd hostname current path in the shell 这应该设置an
  • 如何将 JWT 令牌与 WCF 和 WIF 一起使用?

    一般注意事项 我们正在使用身份服务器3到目前为止我们对此非常满意 借助 MS 和 Thinktecture OWIN 中间件 我们可以非常轻松地保护 MVC 和 ASP NET Web API 应用程序的安全 我们所服务的客户端仍然有很多
  • 如何修复调用 Thread.sleep() 时未处理的异常的编译错误?

    我是 Java 新手 也是编程新手 我知道直接进入 Java 可能不是最好的主意 并且无论我如何尝试在程序中添加暂停 我都会不断收到错误 我正在做一个简单的计数程序 想要在每个数字之间添加一秒的延迟 这是我到目前为止的代码 import j
  • Android“操作系统”如何检测来电

    我想知道 Android 操作系统如何检测来电 号码 并显示联系人姓名 并为我们提供接听电话的选项 点击 结束通话按钮 时操作系统内部会发生什么 当我对此进行搜索时 我只获得了创建我自己的应用程序的类和方法 请求解释 在 Android 中
  • Pyspark 中的多个 WHEN 条件实现

    我有我的 T SQL 代码 我已在 Pyspark 中对其进行了转换 但出现了错误 CASE WHEN time on site eventaction IN AND time on site next action OUT AND tim
  • Rails 4:如何处理未选择任何内容的已提交表单?

    抱歉 如果标题有点令人困惑 我有一个表格Item与田野name 有一个文本字段 用户可以在其中输入名称并提交 但是如果用户没有输入任何内容并点击提交 Rails 会给我一个param not found item错误 我不知道该找谁来解决这
  • javascript 必须在 head 标签中吗?

    我相信 javascript 可以出现在任何地方 几乎 但我几乎总是在两者之间看到它 我正在使用 jquery 想知道它是否由于某种原因必须位于 head 标签中 或者如果我移动它是否会破坏某些内容 谢谢 编辑 为什么它几乎总是在头部标签中
  • 如何在 mysql REGEXP 中转义方括号?

    我将视频嵌入代码存储在数据库表中 我们使用多种视频源 包括 YouTube Viddler 和本地存储的 Flash 文件 我需要找到所有带有 flash 文件的记录 Flash 记录的正文字段如下所示 swf file sites def
  • Fusion Log Viewer 的替代品?

    除了 Fuslogvw exe 之外 是否还有其他 Fusion 日志查看器程序 或者将 Fusion 日志输出定向到您自己的目录 然后手动检查大量 HTM 文件 我的两个主要抱怨是 我想要一个概述 显示哪些程序集加载成功 哪些失败 我不确
  • 当时仅打开一扇平开窗

    我开发了一个 Swing 应用程序 但每次运行应用程序时都会打开新窗口 我希望如果一个窗口已打开 则其他窗口不允许打开 Here是一个例子Java单个应用程序实例 单实例应用程序是一种无论用户尝试启动多少次都只允许运行 1 个应用程序的应用
  • event.preventDefault() 函数在 IE 中不起作用

    以下是我的 JavaScript mootools 代码 orderNowForm addEvent submit function event event preventDefault allFilled false required e
  • 如何通过 Eclipse 插件使用 Java 11 (Java 10)?

    如果我在 Eclipse 插件中指定 JavaSE 10 作为最低执行环境 当我的插件作为 Eclipse 应用程序启动时 出现以下错误 org osgi framework BundleException Could not resolv
  • 先有鸡还是先有蛋的问题:文件的哈希值(包括文件内的哈希值)!可能的?

    问题是我有一个有元数据空间的文件 我想在其中存储用于完整性验证的哈希值 问题是 一旦我存储了哈希值 文件和哈希值就会随之改变 我完全理解 根据定义 使用 md5 sha 等单向加密哈希方法是不可能的 我还意识到容器可以像 zip co 那样
  • UseShellExecute=false 时无法提升权限

    我想启动一个具有提升权限但具有隐藏窗口的子进程 实际上是相同的控制台应用程序 我接下来做 var info new ProcessStartInfo Assembly GetEntryAssembly Location UseShellEx
  • 如何从文件中读取特定格式的数据?

    我应该从类似于此格式的文件中读取输入和参数 Add id 324 name john name2 doe num1 2009 num2 5 num2 20 问题是我不允许使用 fgets 我尝试使用 fscanf 但不知道如何忽略 并分隔字