使用 sscanf 解析文本文件的整数和浮点值

2024-01-06

我想将包含这些字段的文件解析为整数和浮点变量,我尝试使用 fscanf、strtok、sscanf 来执行此操作。但它们都不起作用!

文件的一些行:

fed18 5.7 12.7 144997 8087 267345 100776
fedora18 24.9 25.3 253566 10501 126282 118157
fed18 5.9 12.7 145005 8094 267345 100785
fedora18 23.3 25.3 253576 10507 126282 118169
fed18 6.2 12.7 145013 8100 267345 100789

运行以下代码会返回错误值!我不知道我搜索时出了什么问题,每个人都使用这样的代码,并且它对他们来说工作正常!

 while(fgets(str,512,fp)!= NULL)//read file line by line
{
char *tokenstring = str;
uint64_t netrx,nettx,vbd_rd,vbd_wr;
double cpu, mem;
char a[10],b[10],c[10],d[10],e[10],f[10],g[10];
   sscanf(tokenstring, "%s ,%[^' '],%[^' '],%[^' '],%[^' '],%[^' '],%[^' ']",g, a, b, c, d, e, f);
   cpu = atof(a);
   mem = atof(b);
   nettx  = atoi(c);
   netrx  = atoi(d);
   vbd_rd  = atoi(e);
   vbd_wr  = atoi(f);
   printf("%s %f %f %ld %ld %ld %ld\n",g,cpu,mem,netrx,nettx,vbd_rd,vbd_wr);
}
fclose(fp);

这是输出:

fed18 38.000000 1.000000 0 0 0 0
fedora18 38.000000 1.000000 0 0 0 0
fed18 38.000000 1.000000 0 0 0 0
fedora18 38.000000 1.000000 0 0 0 0
fed18 38.000000 1.000000 0 0 0 0

我用 bash 脚本编辑了原始文本文件并使用awk,.... 原始行的格式如下:

     fed18 --b---       3616    6.3    1052640   12.7    1052672      12.7     3    1   125864     6023    1        0   254349    93082    7412662    4730752    0
  fedora18 --b---       4711    2.4    2101216   25.3    2101248      25.3     3    1   249151     8636    1        0   126083   113505    3306934    5992656    0

我使用 bash 脚本选择了一些列。 也许这导致了问题!

我评论了 using function 的行atoi or atof但仍然输出错误的值。


如果您总是期望参数之间有一个空格,您可以简单地使用格式字符串并消除对atoi, atof:

while(fgets(str,512,fp)!= NULL)//read file line by line
{
    char *tokenstring = str;
    uint64_t netrx,nettx,vbd_rd,vbd_wr;
    char g[10];
    double cpu, mem;
    long int c, d, e, f;
    sscanf(tokenstring, "%s %lf %lf %lu %lu %lu %lu", g, &cpu, &mem, &nettx, &netrx, &vbd_rd, &vbd_wr);
    printf("%s %f %f %ld %ld %ld %ld\n",g,cpu,mem,netrx,nettx,vbd_rd,vbd_wr);
}
fclose(fp);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 sscanf 解析文本文件的整数和浮点值 的相关文章

随机推荐

  • MongoDB。 BadValue:使用副本集启用授权时需要 security.keyFile

    我正在尝试配置副本集Mongo in a Docker容器 我已将副本集添加到mongod conf file replication replSetName rs0 但在启动过程中我遇到了下一个异常 BadValue security k
  • 使用 ADO.NET 管理数据库连接

    我们有一个基于 ADO NET 构建的应用程序 我们遵循一些简单的最佳实践 使我们能够利用连接池 例如 使用数据库的代码块可能如下所示 using DbConnection dbConnection GetDatabaseConnectio
  • scrollOverflow 在 fullPage.js 中不起作用

    我最近开始在一个项目中使用 fullPage js 但我不知道如何让溢出滚动起作用 我的页面中的最后一个 部分 很长 因此需要垂直滚动 这是我里面的代码 tags
  • 在 JAR 中指定 JVM 堆大小

    我正在尝试编写一个游戏引擎 但它需要比默认设置更多的内存 我知道如果您双击一个 jar 则会使用默认设置 那么我是否可以指定 JAR 在其清单文件 或其他地方 中需要自定义堆大小 此外 引擎位于它自己的 jar 中 游戏位于另一个 jar
  • 在 Python 包中包含 *.pyd 文件

    我有一个 python 模块模块 pyd一旦手动将其放入 python 安装文件夹的站点包中 它就可以正常工作 当我将解决方案上传到云环境时 问题就开始了 构建包要求我将每个模块作为要安装的包传递pip install module 我创建
  • 如何覆盖Resources.Designer.cs中默认的System.Resources.ResourceManager?

    我想覆盖System Resources ResourceManager from Resources Designer cs文件来实现自定义 ResourceManager GetString 方法功能 这可能吗 我创建了一个Custom
  • 在任何其他方法调用之前自动调用方法

    我有大量的类继承大量的接口 这些类正在实现的接口不共享任何公共方法 但它们都共享一个公共的第一步 一个例子是 A类看起来像这样 class A InterfaceA GetFoo Database db PerformSetup db Th
  • python 如何打印压缩文件的百分比

    我想获取压缩文件时的百分比 例如它会打印 1 2 3 等 我不知道从哪里开始 我现在只有压缩文件的代码 该怎么做呢 Code zipPath zipfile ZipFile Files Zip pic zip w for root dirs
  • JavaScript域从子域读取cookie

    我有一个简单的问题 有没有办法通过 JavaScript 读取主域上的子域 cookie 例如 我在子域 yes something com 中设置了值为 2 的 cookie hello 之后我想在 Something com 上读取它
  • 如何在android中使用GSON解析以下JSON?

    As keysArray A B C 是dynamic and cores具有相同的对象名称 请帮忙 result success keysArray A B C D E cores A key value B key value C ke
  • Appium:在开始 appium-testng 测试运行之前,如何使用 java 在 aws device farm 设备上以编程方式创建 google 帐户

    我想在 aws 设备场上运行我的自动化 Android 套件测试用例 大部分脚本是使用 gmail 登录创建的 在实时设备上 可以手动配置 Gmail 帐户 因此每当脚本运行时 都会弹出已配置的 Gmail 帐户以供登录 但对于 aws 设
  • Pycharm:通过鼠标悬停启用变量/名称/标记的工具提示?

    我正在寻找类似于 Visual Studio 将鼠标悬停在编辑器中的任何内容 类型信息 方法详细信息 其他有用信息等 上时显示工具提示的方式 这是 PyCharm 中的可配置选项吗 我还没有找到它 Thanks 仅可通过快速文档热键使用 对
  • 错误:eglSurfaceAttrib 未实现

    我正在尝试使用 aChartEngine 显示折线图 但是 页面显示为空白 并且我收到错误 eglSurfaceAttrib 未实现 进度 显示 页面代码
  • 如何比较批处理文件中的两个文件?

    如何比较批处理文件中的两个文件 并根据它们是否匹配执行操作 我尝试过类似的事情 if file1 txt NEQ file2 txt goto label 但它比较实际的字符串 file1 txt 而不是文件 我读过有关 COMP 命令的内
  • 我应该何时保存 Windows Phone 7 上的设置?

    我有一个调用的设置保存方法 但我尝试卸载 并且失去焦点 应用程序将关闭并且在使用这两种方法之前不会保存 我应该什么时候保存应用程序设置以避免这种情况发生 我应该使用计时器并每 30 秒保存一次 还是什么 您保存的频率取决于您的应用程序 然而
  • 创建 MySQL 表时出现语法错误

    也许我太习惯 Postgres 但为什么我会收到此错误 您的 SQL 语法有错误 检查手册 与您的 MySQL 服务器版本相对应 以便使用正确的语法 靠近 id int not null AUTO INCRMENT 电子邮件 varchar
  • Gradle 可以按特定顺序运行两个测试吗?

    我们正在将一些 ant 构建脚本迁移到 gradle 并在此过程中诊断问题 出现的一个问题是 在 CI 服务器 运行 gradle 的 jenkins 上 我们偶尔会遇到测试失败的情况 我们认为该问题与测试执行顺序有关 因为失败的测试之一在
  • 增强线程池

    我的应用程序需要一个线程池 并且我想尽可能依赖标准 C 11 或 boost 的东西 我意识到有一个非官方的 boost线程池类 它基本上解决了我所需要的 但是我宁愿避免它 因为它不在boost库本身中 为什么它仍然不在核心库中很多年 在此
  • 将 python 的默认版本从 32 位更改为 64 位

    我正在尝试将默认的 python exe 从 32 位切换到 64 位 我第一次下载并安装 python 时 我下载的是 32 位版本 后来我在我目前正在进行的项目中发现 我需要 64 位版本的 python 才能使所有内容兼容 我已经卸载
  • 使用 sscanf 解析文本文件的整数和浮点值

    我想将包含这些字段的文件解析为整数和浮点变量 我尝试使用 fscanf strtok sscanf 来执行此操作 但它们都不起作用 文件的一些行 fed18 5 7 12 7 144997 8087 267345 100776 fedora