如何在c中使用fread()读取结构体的内容

2023-12-20

我有以下代码,我试图读取文件的内容并显示它并写入另一个文件。我的问题是我在屏幕上看到的内容与文件的内容完全不同。我已经把文件的部分内容和显示的结果的部分

#include<iostream>
#include <stdint.h>
#include <stdio.h>
struct test
{
uint64_t start;
uint16_t length;
struct test *next;   
};

void main()
{
    char frd[32];
        std::cout<<"\nEnter name of file to read?\n";
    std::cin>>frd;
    FILE *rd=fopen(frd,"r+b");
    FILE *wrt=fopen("abc2.doc","w+");
     struct test test_st;

    while(fread (&test_st, sizeof(test_st), 1, rd))
{
       fwrite (&test_st,sizeof(test_st),1,wrt);
    printf("%llu,%u\n", test_st.start, test_st.length);
 }
fclose(rd);
fclose(wrt);
}

源文件部分内容:

0,43 
43,95 
138,159
297,279
576,153
729,64

显示结果的前几行:

3474018176930688048,13879
3472896773804077344,14136
4049914982932231728,13362
3978707281317738034,12342
3474306356368193848,14132
3688511012684903220,14130
724298015681099573,13624

源文件和目标文件具有精确的副本


您的文件不包含结构,它包含逗号分隔的值(数据的文本表示)。

结构以二进制形式存储,而不是文本形式。

当您读取时,您的程序会尝试将其读取的内容解释为二进制。撤消该操作:

$ printf "%x%x" 3474018176930688048 13879 | sed 's/../\\\\x&/g' | sed 's/^/echo -e /e'
061 34,067

要读取以文本形式存储的数据,您可以使用以下命令读取每一行fgets,然后解析它(例如:使用sscanf()).

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

如何在c中使用fread()读取结构体的内容 的相关文章

  • 具有子列表属性映射问题的自动映射器

    我有以下型号 Models public class Dish Required public Int64 ID get set Required public string Name get set Required public str
  • 进程何时获得 SIGABRT(信号 6)?

    C 中进程获得 SIGABRT 的场景有哪些 该信号是否始终来自进程内部 或者该信号可以从一个进程发送到另一个进程吗 有没有办法识别哪个进程正在发送该信号 abort 向调用进程发送SIGABRT信号 就是这样abort 基本上有效 abo
  • ASP.NET MVC 中的经典 ASP (C#)

    我有一个应用程序想要 最终 转换为 ASP NET MVC 我想要进行全面的服务升级 到 ASP NET 但想要使用当前的 ASP 内容来运行当前的功能 这样我就可以在对新框架进行增量升级的同时升级小部分 该站点严重依赖于不太成熟的 VB6
  • 我的线程图像生成应用程序如何将其数据传输到 GUI?

    Mandelbrot 生成器的缓慢多精度实现 线程化 使用 POSIX 线程 Gtk 图形用户界面 我有点失落了 这是我第一次尝试编写线程程序 我实际上并没有尝试转换它的单线程版本 只是尝试实现基本框架 到目前为止它是如何工作的简要描述 M
  • C#动态支持吗?

    看完之后这个帖子 https stackoverflow com questions 2674906 when should one use dynamic keyword in c sharp 4 0k和链接 我还有 2 个问题 问题 1
  • 为什么大多数 C 开发人员使用 Define 而不是 const? [复制]

    这个问题在这里已经有答案了 在许多程序中 define与常量具有相同的用途 例如 define FIELD WIDTH 10 const int fieldWidth 10 我通常认为第一种形式优于另一种形式 它依赖于预处理器来处理基本上是
  • 显示异常时的自定义错误消息:从客户端检测到潜在危险的 Request.Form 值

    我在我的 Web 应用程序中使用 ASP NET 的登录控件 当发生此异常时 我想在标签上显示一种有趣的错误类型System Web HttpRequestValidationException A potentially dangerou
  • POCO HTTPSClientSession 发送请求时遇到问题 - 证书验证失败

    我正在尝试使用 POCO 库编写一个向服务器发出 HTTPS 请求的程序 出于测试目的 我正在连接到具有自签名证书的服务器 并且我希望允许客户端进行连接 为了允许这种情况发生 我尝试安装InvalidCertificateHandler这是
  • C++ 异步线程同时运行

    我是 C 11 中线程的新手 我有两个线程 我想让它们同时启动 我可以想到两种方法 如下 然而 似乎它们都没有按照我的预期工作 他们在启动另一个线程之前启动一个线程 任何提示将不胜感激 另一个问题是我正在研究线程队列 所以我会有两个消费者和
  • 检查算术运算中的溢出情况[重复]

    这个问题在这里已经有答案了 可能的重复 检测 C C 中整数溢出的最佳方法 https stackoverflow com questions 199333 best way to detect integer overflow in c
  • C 语言中 =+(等于加)是什么意思?

    我碰到 与标准相反 今天在一些 C 代码中 我不太确定这里发生了什么 我在文档中也找不到它 In ancientC 版本 相当于 它的残余物与最早的恐龙骨头一起被发现 例如 B 引入了广义赋值运算符 使用x y to add y to x
  • 无法将类型“System.IO.Stream”隐式转换为“Java.IO.InputStream”

    我提到了一些类似的问题 但没有一个涉及IO 当我使用时 我在java中使用了相同的代码Eclipse 那次就成功了 但现在我尝试在中使用这段代码Mono for Android C 它不起作用 我正在尝试运行此代码来创建一个InputStr
  • 在 C 中使用 GNU automake 中的解析器

    我是 GNU autotools 的新手 在我的项目中使用了 lex 和 yacc 解析器 将它们作为 makefile am 中的源代码会产生以下错误 配置 in AC CHECK PROGS YACC bison yacc none i
  • 将代码拆分为标头/源文件

    我从 Asio 的示例页面中获取了以下代码 class tcp connection public boost enable shared from this
  • 在类的所有方法之前运行一个方法

    在 C 3 或 4 中可以做到这一点吗 也许有一些反思 class Magic RunBeforeAll public void BaseMethod runs BaseMethod before being executed public
  • 耐用功能是否适合大量活动?

    我有一个场景 需要计算 500k 活动 都是小算盘 由于限制 我只能同时计算 30 个 想象一下下面的简单示例 FunctionName Crawl public static async Task
  • 为什么拆箱枚举会产生奇怪的结果?

    考虑以下 Object box 5 int int int box int 5 int nullableInt box as int nullableInt 5 StringComparison enum StringComparison
  • 结构体指针的动态数组

    我必须使用以下代码块来完成学校作业 严格不进行任何修改 typedef struct char firstName char lastName int id float mark pStudentRecord pStudentRecord
  • WinRT 定时注销

    我正在开发一个 WinRT 应用程序 要求之一是应用程序应具有 定时注销 功能 这意味着在任何屏幕上 如果应用程序空闲了 10 分钟 应用程序应该注销并导航回主屏幕 显然 执行此操作的强力方法是在每个页面的每个网格上连接指针按下事件 并在触
  • 匿名结构体作为返回类型

    下面的代码编译得很好VC 19 00 23506 http rextester com GMUP11493 标志 Wall WX Za 与VC 19 10 25109 0 标志 Wall WX Za permissive 这可以在以下位置检

随机推荐

  • 为什么 System.Random 类不是静态的?

    当您使用System Random类 你必须创建它的一个实例 为什么不是static 因为如果我想要一个 0 到 9 之间的随机数 我可以使用 staticmethod System Random Next int int int ourR
  • SQL 复制设置 - 几乎完成

    我正在尝试在两个 SQL Server 之间设置复制 我几乎已经完成了 但遇到了权限错误 看起来 服务器通过 VPN 连接 发行商 发行商 W2003 SQL 2005 域控制器 订阅服务器 W2008 SQL 2008 不在域上的独立服务
  • C# WebRequest 发送表单数据大小限制

    我正在尝试在 WebRequest 中发送表单数据 该函数工作正常并按预期返回 成功 响应流 但是 如果 data 变量的长度超过 30 000 个字符 我会遇到 HTTP 500 错误 Message The remote server
  • Selenium EventFiringWebDriver 导航事件

    我正在使用 Selenium Web 驱动程序 我想监听浏览器中发生的事件 例如 当页面上的某些 javascript 导致 url 使用以下命令更改时window location 我有一个监听器附加到Navigated我的事件Event
  • Asp.Net Core 5 API Web像WCF一样以流模式上传大文件

    我需要在用 asp net core 5 制作的网络服务器上以流模式 一次一个 上传一个大文件 7GB 配置服务器端 public class Program public static void Main string args Crea
  • 将 XML 数组转换为 XML 时出现奇怪的文本

    我使用这个问题的答案将 XML 数组转换为单个 XML 输出 将 XML 数组输出为纯 XML https stackoverflow com questions 2554671 output array of xml to plain x
  • 为什么这个救援语法有效?

    好的 我正在使用的应用程序有这种方法 并且它可以在生产中使用 我的问题为什么这有效 这是新的 Ruby 语法吗 def edit load elements current user unless current user role adm
  • AWS Elastic Beanstalk 中的自定义 URL

    AWS Elastic Beanstalk 建议使用以下格式的 URL https appname elasticbeanstalk com 但我需要将其更改为我自己的网址 例如https tarta ai 怎么做 Note 我的域使用 A
  • 如何在GDB中像数组一样查看指针?

    假设定义 int a 100 Type print a然后 gdb 会自动将其显示为数组 1 2 3 4 然而 如果a作为参数传递给函数 那么gdb会将其视为普通的int指针 类型print a将显示 int 0x7fffffffdaa0
  • 如何在UI底部的固定位置设置一个按钮?

    我希望一个按钮始终出现在 UI 页脚的固定位置 总是 无论它上面是否有组件 请在您的主布局下选择一个相对布局 将其高度和宽度设置为填充父项 并将其重力设置为底部 然后将任何文本视图或任何您想要的按钮放入其中
  • setup.py - 安装后将模块符号链接到 /usr/bin

    我几乎完成了 python 包的开发 并且还使用 distutils 编写了基本的 setup py usr bin env python author Prahlad Yeri description Small daemon to cr
  • 在外部 JavaScript 文件中使用 KnockoutJS ViewModel

    如何在外部 JS 文件中创建 KO JS ViewModel 然后在 html 文件中使用它 这看起来是一件很简单的事情 但我无法让它工作 也找不到任何关于如何做到这一点的明确信息 如果我忽略了 我会道歉 如果有人能指出我的答案 我会删除它
  • 使用字段数将文件拆分为更小的文件

    我很难将一个大的 50GB csv 文件分解成更小的部分 每行有几千个字段 一些字段是双引号中的字符串 其他字段是整数 小数和布尔值 我想逐行解析文件并按每行中的字段数进行分割 字符串可能包含多个逗号 例如 以及许多空字段 1 30 50
  • Delphi 2007 和 Logitech 网络摄像头驱动程序

    不久前 我遇到了 Delphi 2007 在 Logitech 网络摄像头驱动程序运行时无法运行和调试应用程序的问题 显然 罗技驱动程序会在每个正在运行的进程中插入一个存根 从而弄乱调试器的偏移量 已经一年多了 这仍然是一个问题吗 罗技是否
  • 如何在不调用 java.lang.String 的情况下检查 clojure 中字符串的相等性?

    clojure 有没有办法检查字符串的相等性 即我需要知道它们的内容是否相等 而不是位置 thanks Clojure 中的平等 函数 总是测试值 而不是身份 所以两个字符串是 如果它们有相同的内容 对于大多数 Java 类型 包括 Str
  • 使用 MongoDB 代替 MS SQL Server 的优点和缺点 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我是 NoSQL 世界的新手 正在考虑将 MS Sql Server 数据库替换为 MongoDB 我
  • 如何在 build.gradle 中检索 ADB 的路径

    我尝试通过启动应用程序gradle task task runDebug dependsOn installDebug run task run type Exec commandLine adb shell am start n com
  • 使用附加值扩展枚举

    延长期限的常见做法是什么enum在C语言中 我有enum来自其他包含的内容 并希望用一些值来扩展它们 希望以下示例能够为我想要实现的目标提供直观的信息 include
  • std::thread 不是使用 Eclipse Kepler MinGW 的命名空间 std 的成员

    我正在尝试编译一个简单的 C 程序 该程序在 eclipse kepler mingw 4 8 1 和 win32 上使用 std thread 我希望在多年的 Windows 开发之后 有一天能将开发转移到 Linux include t
  • 如何在c中使用fread()读取结构体的内容

    我有以下代码 我试图读取文件的内容并显示它并写入另一个文件 我的问题是我在屏幕上看到的内容与文件的内容完全不同 我已经把文件的部分内容和显示的结果的部分 include