从指针指向内存的二进制文件读取结构

2023-12-11

struct st {
        char *p;
        int len;
};

这是我需要写入二进制文件的结构,以及保存在中的字符串

char *p

我应该用字符数组数据编写一个二进制文件。写入二进制文件后。还应该能够从二进制文件中以相同的结构读取它。

我尝试使用 FSEEK_END 获取二进制大小,并根据文件大小执行 fread,但它没有保存字符串。请建议。任何帮助/建议/指示将不胜感激。

提前致谢。

示例代码:

 struct st {
         char *p;
         int len; 
 };

 struct st varr;
 varr.len = 100;
 varr.p = new char[gen];
 strcpy(varr.p, "Hello World");

 FILE *p;
 p=fopen("address","wb");
 fwrite(&varr,sizeof(struct st),1,p);
 fclose(p); 

这将向我写入指向二进制文件的指针。但我想在这里写整个字符串,但重点是,它应该用一个 fwrite 完成。


将其写入二进制文件是没有用的。一个文本文件就足够了。

但是,如果这是您的家庭作业(或类似作业),我建议您按以下步骤操作:

  • 将长度写为整数;

  • write len字符串的字节数。这不包括终止空值。

回读时:

  • 读取整数长度;

  • 分配这个长度的内存加一字节

  • 将字符串读入该内存并添加终止 null.

使用此长度和指向已分配内存的指针填充您的结构。


在您的评论中,您不断重申您想要一步读和写。使用您当前的数据结构这是不可能的因为字符串总是在内存中的其他地方并且fwrite只能写入连续的内存块。

但是,您会将数据结构更改为:

struct st{
    char p[128];
    int len;
};

然后你can一次写入和读取,因为现在该结构是一个连续的内存块。但现在字符串限制为 128 字节(或您指定的任何大小)。

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

从指针指向内存的二进制文件读取结构 的相关文章

  • 带有 Windows 窗体应用程序的地图

    我正在构建一个需要地图的 C Winforms 应用程序 例如 Google 地图 Bing 地图等 但我对 ToU 许可 非商业使用等感到非常困惑 我的问题 您建议将哪个地图提供商 最好是免费的 嵌入到 winforms 应用程序中以用于
  • 递归显式模板实例化以导出库的符号

    在我之前的问题中我问过递归显式模板实例化是否可能 https stackoverflow com questions 7395113 is recursive explicit template instantiation possible
  • C++ 编译器可以对结构中的元素重新排序吗

    C 编译器 特别是 g 可以对结构体的内部元素重新排序吗 我看到一些奇怪的行为 其中我有一个包含如下内容的结构 Struct SomeStruct long someLong long someLongArray 25 unsigned l
  • 在 IEnumerable 中查找相同的集合

    有一项任务要弄清楚如何更新表 DataTable 连接到一个database没有UPDATE陈述 我想出的例子是从邮箱中读取警报 该表将写入 Alerts 如果邮件正文包含单词 SUCCESS gt Alert 变为绿色 如果 FAIL g
  • iPhone 编程游戏

    使用 Objective C 还是 C 为 iPhone 编写游戏最好 像 Flight Control 这样的游戏会用什么语言编写 图形应采用什么格式才能在 iPhone 上正确显示并快速加载 像 Flight Control 这样的游戏
  • 本机 C++ 通过代理 C++ 托管 dll 使用 C# dll

    这相当复杂 所以请耐心听我说 我有一个用本机 仅限 Win32 C 编码的第 3 方程序 目标 作为目标设计的一部分 它实现了一个 dll 插件系统 本机 DLL 当放置在程序的 ext 目录中时 由目标加载 然后 目标根据需要调用每个 D
  • 如何使用 Regsvr32 注册 .NET COM DLL?

    我有一个使用 COM DLL 的 VB6 应用程序 该DLL是用C 编写的 在 C 项目属性中 我检查了 Register for COM interop 选项 VB6 应用程序在我的开发机器上运行良好 C 代码完全遵循以下格式 CodeP
  • flowlayoutpanel和水平滚动条问题

    我正在使用一个 flowlayoutpanel 它有很多逻辑上的按钮 我遇到的问题是 当我调整窗口大小时 当窗口变小时 我无法看到所有水平排列的按钮 相反 当窗口变小时 按钮会下降到下一行 谁能帮我解决这个问题 我只是希望按钮水平排列 当窗
  • 需要帮助将 winform 迁移到 net 5

    我正在将 winform 应用程序从 net core 3 1 移植到 net 5 并收到以下错误 严重性代码 说明 项目文件行抑制状态 错误NETSDK1136 目标平台必须设置为Windows 通常 通过在 TargetFramewor
  • 将控制台输入和输出重定向到文本框

    您好 提前致谢 我正在尝试 非常努力 将控制台输入和输出重定向到文本框 到目前为止 输出工作正常 但问题在于输入 例如 我无法执行一个简单的程序来执行以下操作 Console WriteLine 请输入您的姓名 字符串名称 Console
  • 使用 openssl 库获取 x509 证书哈希

    我目前正在开发一个应用程序 它使用 openssl 库 libcrypto 来生成证书 现在我必须获取现有证书的哈希值 当我使用终端时 我可以使用以下命令生成哈希值 openssl x509 hash in cert pem noout 输
  • OpenCV:处理每一帧

    我想使用 OpenCV 编写一个跨平台应用程序进行视频捕获 在所有示例中 我发现来自相机的帧是使用抓取功能进行处理并等待一段时间 我想处理序列中的每一帧 我想定义自己的回调函数 每次当一个新帧准备好处理时都会执行该函数 例如直播对于 Win
  • 如何在 ASP.NET MVC 中获取参数数组作为 GET / POST?

    如何最好地获取数组 item gt value 对作为 GET POST 参数 在 PHP 中 我可以这样做 网址 这得到的参数为 Array a gt Array one gt 100 two gt 200 有什么方法可以在 ASP NE
  • 使用 c++20 范围删除最后一个元素的最佳方法是什么

    有没有比反转两次更好的方法来使用 c 20 范围删除容器中的最后一个元素 include
  • 允许使用 AutoMapper 或类似工具映射动态类型吗?

    我已经开始使用https github com robconery massive https github com robconery massive对于一个项目 我想知道是否有任何映射工具可以支持动态到静态类型的映射 我以前使用过 Au
  • System.IndexOutOfRangeException:索引超出了数组的范围[重复]

    这个问题在这里已经有答案了 我正在开发一个 ATM 软件作为家庭作业 我想知道今天处理的交易总量 为此我编写了以下代码 public decimal getDayTransaction int accountid string date s
  • 隐式类型转换 - 编译器错误

    这个问题与this https stackoverflow com questions 3529449 can i make the ternary operator treat my class like a bool问题 下面的代码在V
  • 以编程方式连接和断开 USB,“无需拔出和重新插入”

    我需要以编程方式连接和断开 USB 也就是说 我已经插入了USB设备 我需要使用 C NET 应用程序传输文件 该应用程序将监视特定文件夹并将文件从该文件夹传输到 USB 驱动器 我需要在文件传输后断开 USB 设备的连接 并在需要时连接
  • wpf中的图像问题(图像不显示)

    我不明白为什么我无法在 WPF 中显示图像 也许我不小心修改了我的资源文件夹 这就是我没有显示的原因 所以我创建了一个新的 wpf 应用程序 我有这个 当我运行该程序时 我的图片显示为 为什么当我尝试在程序中执行相同的操作时 图像没有显示
  • 在 C++11 中设置 std::thread 优先级的可移植方法

    在后 C 11 世界中设置 std thread 实例的优先级的正确方法是什么 是否有一种至少在 Windows 和 POSIX Linux 环境中有效的可移植方法 或者是获取句柄并使用可用于特定操作系统的任何本机调用的问题 无法通过 C

随机推荐

  • 从列表创建多个复选框并获取所有值

    我想从一个大列表中生成多个复选框 并获取所有值 这是到目前为止我的代码 列表可能更大 from Tkinter import def print ingredients args values cheese cheese get ham h
  • 如何在 python 中将多图像 TIFF 转换为 PDF?

    我想在 python 中将多图像 TIFF 转换为 PDF 我是这样写的代码 这段代码怎么行不通 我应该如何改变它 images img Image open multipage tif for i in range 4 try img s
  • PHP - 打印带有控制字符的字符串

    有没有办法让 PHP 输出一个带有 r n 和 n 的字符串作为实际文本而不是换行符 我看到一个有趣的问题 n 上的explode 无法在Windows 服务器上正常运行 编辑 r n 来自用户在输入文本区域时按 Enter 键 所以我没有
  • 安卓图片上传

    你好 我是 Android 开发新手 我想知道如何在 Android 中上传图像 我没有找到任何有用的教程 你能给我一些指导吗 请帮助我 我为你构建了这个小方法 private boolean handlePicture String fi
  • JSON 完成的自定义扩展在双引号中不起作用

    我正在开发一个 VSCode 扩展 它应该通过额外的代码完成来增强 JSON 编辑 因此我添加了四个虚拟建议 foo foo1 foo2 foo3 开始测试 当在 JSON 键后输入冒号时 它会按预期工作 此外 当我在空对象中触发完成时 它
  • Tensorflow v1.10:将图像存储为字节字符串或每个通道?

    Context 据了解 目前 TF 的 Record 文档还有一些不足之处 我的问题是关于什么是最佳存储 一个序列 它的每个元素类别概率 以及 一些 上下文 信息 例如序列的名称 作为 TF 记录 也就是说 这个问题考虑将序列和类概率存储为
  • karate.callSingle 在 karate-config.js 中找不到 .feature 文件

    我正在使用空手道 v0 9 6 它是一个很棒的工具 我有超过 1000 个场景 每个场景都需要令牌才能工作 因此我在 karate config js 中使用 callSingle 来创建和缓存令牌 我使用独立的 jar 文件 我的 kar
  • SFINAE 未编译[重复]

    这个问题在这里已经有答案了 我以前经常使用 SFINAE 但我有一个非常非常简单的示例 但今天无法运行 class X public template
  • 一次测试 C 中的所有位字段

    假设我有一个 C 结构定义为 struct data some memebers int flag a 1 int flag b 1 int flag c 1 some other members 有没有办法利用位域在内存中表示为单个 in
  • Spring data JPA自定义存储库,如何应用逻辑

    我尝试实现 JPA 自定义存储库 我有一个像这样的过滤器对象 public class FilterPatient private String surname private String name private String cf a
  • 谷歌地图透明图像叠加

    我正在寻找一些覆盖地图的透明固定位置图像的示例 移动地图时 透明图像不应移动 并且标记应出现在图像顶部 有谁知道有什么例子吗 有一种方法可以将一个 div 放在另一个 div 之上 它将 标记放置在地图的中心 http code googl
  • 如何更改内置的 Laravel 5 身份验证系统?

    我是第一次使用 Laravel 5 我之前曾与 4 人合作过 Laravel 附带了一个 AuthenticatesAndRegisterUsers php 文件 它可以处理大部分内容 并使用户注册和登录变得非常容易 我想调整此文件以满足我
  • 在Django中使用url_has_allowed_host_and_scheme后什么时候需要使用iri_to_uri?

    In the Django 3 0 发行说明 此评论是关于url has allowed host and scheme 为了避免有效范围可能出现的混淆 私有内部效用is safe url 被重命名为url has allowed host
  • 注册后通过电子邮件发送moodle用户数据

    我需要在我的 Moodle 网站上进行用户注册后向管理员发送一封自定义电子邮件 但我希望它显示所有用户信息 我进行了很多搜索并找到了这个link 它会向管理员发送一封带有用户名的自定义电子邮件 但我一直在尝试发送更多信息 例如我添加的自定义
  • 如何在 JavaScript 中按下按键时播放声音?

    我正在尝试编写 JavaScript 代码 以便仅在按下某个键时才播放声音 我试图将其关联的 HTML 代码是 div class key div
  • Kivy - python - 回收视图行中的多个小部件

    我想制作一个在每个回收视图行中有多个标签的回收视图 在我的具体示例中 我希望每行有 3 个标签 1 个包含项目索引的标签 一个包含一个数据集中的项目的标签 以及另一个数据集中的另一个标签 在此示例中 取自 kivy 示例 我们有一个回收视图
  • 解压 tar.gz 文件? [复制]

    这个问题在这里已经有答案了 我想下载并打开以下内容tar gzR 中的文件 http s wordpress org resources survey wp2011 survey tar gz 有没有一个命令可以完成这个任务 fn lt h
  • 如何准备包含 NText (clob) 参数的 ADO.NET 语句

    我正在更新一个现有的应用程序 该应用程序使用工厂来构建准备好的语句 然后稍后执行它们 这适用于系统的其余部分 但我的任务是添加对使用NText 我不知道如何正确准备声明 我收到以下运行时错误 SqlCommand Prepare 方法要求所
  • 将 HTML 5 文档类型添加到 XDocument (.NET)

    为 System Xml Linq XDocument 创建文档类型时 如下所示 doc AddFirst new XDocumentType html null null null 生成的保存的 XML 文件开头为 请注意右尖括号之前的额
  • 从指针指向内存的二进制文件读取结构

    struct st char p int len 这是我需要写入二进制文件的结构 以及保存在中的字符串 char p 我应该用字符数组数据编写一个二进制文件 写入二进制文件后 还应该能够从二进制文件中以相同的结构读取它 我尝试使用 FSEE