将文件的全部内容读取到 c char *,包括新行

2023-12-02

我正在寻找一种跨平台(Windows + Linux)解决方案来将整个文件的内容读取到char *.

这就是我现在所拥有的:

FILE *stream;
char *contents;
fileSize = 0;

//Open the stream
stream = fopen(argv[1], "r");

//Steak to the end of the file to determine the file size
fseek(stream, 0L, SEEK_END);
fileSize = ftell(stream);
fseek(stream, 0L, SEEK_SET);

//Allocate enough memory (should I add 1 for the \0?)
contents = (char *)malloc(fileSize);

//Read the file 
fscanf(stream, "%s", contents);     

//Print it again for debugging
printf("Read %s\n", contents);

不幸的是,这只会打印文件中的第一行,因此我假设 fscanf 在第一个换行符处停止。不过,我想读取整个文件,包括并保留新行字符。我不想使用 while 循环和 realloc 来手动构造整个字符串,我的意思是必须有一种更简单的方法?


类似这样的事情,可能是吗?

FILE *stream;
char *contents;
fileSize = 0;

//Open the stream. Note "b" to avoid DOS/UNIX new line conversion.
stream = fopen(argv[1], "rb");

//Seek to the end of the file to determine the file size
fseek(stream, 0L, SEEK_END);
fileSize = ftell(stream);
fseek(stream, 0L, SEEK_SET);

//Allocate enough memory (add 1 for the \0, since fread won't add it)
contents = malloc(fileSize+1);

//Read the file 
size_t size=fread(contents,1,fileSize,stream);
contents[size]=0; // Add terminating zero.

//Print it again for debugging
printf("Read %s\n", contents);

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

将文件的全部内容读取到 c char *,包括新行 的相关文章

  • “RouteCollection”不包含“MapMvcAttributeRoutes”的定义

    我尝试使用基于属性的路由 但是当我尝试以下代码片段来激活基于属性的路由时 我收到以下错误消息 RouteCollection 不包含定义 MapMvcAttributeRoutes 这是我的代码 public class RouteConf
  • 如何在 C# 中知道 PID 和 VID 来发现虚拟 COM 端口名称

    如果我知道 PID 和 VID 我会尝试找到查找 COM 端口名称的正确方法 到目前为止 我写了解决方法 但我不相信没有更优雅和正确的方法 顺便说一句 我知道我可以使用 REGEX 编写此代码只是为了测试解决方法 我知道还有很大的改进空间
  • C++ 和序列化:有什么方法可以进行某种内省吗?

    我读过一些例子维基百科 http en wikipedia org wiki Type introspection C 2B 2B但我正在寻找一些现实生活中的例子 如何使用内省 为什么 它有助于编写干净的代码 以及代码本身 例如 有没有办法
  • 为什么这个 oracle 批量插入不起作用?

    我正在尝试将一些数据批量插入到 oracle 数据库中 我按照文档中的示例进行操作 this DataBaseAccess new OracleConnection connString var dataAdapter new Oracle
  • WPF Dispatchertimer 延迟反应/冻结

    在我的 WPF 应用程序中 我使用 3 个不同的 DispatcherTimers 一种是用于显示当前时间 一种是每 5 秒运行一次数据库查询 第三个每 1 秒刷新一次自定义按钮的值 当我的程序运行时 有很多延迟 冻结 例如 时间开始正确计
  • 在目标 VS 安装时,VSIX 扩展内部使用的 WPF-Log4Net 未输出日志

    当 Log4net 在 VSIX 扩展中使用并安装在另一个目标 VS 上时 它不会记录日志 我有一个 WPF 解决方案 我下载了 log4net dll 添加了 log4net config 并将 复制到输出目录 值设置为 始终复制 log
  • 通过用于 Symbol 条码扫描仪 DS4208 的 SNAPI.dll API 捕获图像

    我想通过 SNAPI API 从 Symbol 目前为 Zebra 条形码扫描仪 DS4208 型号 我们还使用 Zebra 的另一个但兼容的型号 捕获图像 条形码捕获 识别效果很好 但看起来像SnapiDLL SNAPI SnapShot
  • numpy 数组最快的保存和加载选项

    我有一个生成二维的脚本numpy数组与dtype float和形状的顺序 1e3 1e6 现在我正在使用np save and np load对数组执行 IO 操作 然而 这些函数对于每个数组都需要几秒钟的时间 是否有更快的方法来保存和加载
  • boost::asio::io_service 是否保留处理程序的顺序?

    Does boost asio io service http www boost org doc libs release doc html boost asio reference io service html保证处理程序的调用顺序与
  • 我要恢复我的记忆!我怎样才能真正处理一个控件?

    我正在制作一个应用程序 它创建大量的窗口控件 按钮和标签等 它们都是通过函数动态生成的 我遇到的问题是 当我删除控件并处置它们时 它们不会从内存中删除 void loadALoadOfStuff while tabControlToClea
  • 修剪 UIImage 边框

    这是我想要修剪的图像的示例 我想去掉图像周围的边框 在本例中是顶部和底部的黑条 我在Github上找到了一个库 CKImageAdditions https github com cmkilger CKImageAdditions 但是它似
  • 修改正在运行的可执行文件的资源内容

    All 我将应用程序设置存储在资源中 当我的程序首次加载时 我使用 WinAPI 读取指定的资源 然后我解析检索到的字节数据 这对我来说完美无缺 现在假设用户更改了我的应用程序中的设置 他 她检查复选框控件 我想将更新的设置保存到我的资源中
  • 执行存储过程时 ExecuteNonQuery() 返回 -1

    我正在尝试在 Visual Studio 中执行存储过程 下面给出 CREATE PROCEDURE dbo addStudent stuName varchar 50 address varchar 100 tel varchar 15
  • 从视图模型调用方法的命令

    好吧 我倾向于避免使用命令 因为它们总是让我感到困惑 但我正在进行一个新项目 并且正在尝试正确构建它 并且在我看来没有任何代码隐藏 基本上我现在想做的就是连接一个按钮来触发一个命令 在我的视图模型上执行一些操作 但不知何故 如此简单的事情仍
  • 类型别名和不完整类型

    我可能已经超出了解决这个本应简单的问题的范围 我在这里开始这个问题 在编译时获取基类的类型 https stackoverflow com questions 17735852 getting type of a base class at
  • #define 内存地址声明

    这个 define 语句有什么作用 它用于定义内存地址 但我不明白 uint32 t 部分 define GPxDAT uint32 t 0x6FC0 通常用于访问映射到地址空间的硬件寄存器 或者一些特定的内存地址 硬件寄存器应定义为vol
  • 使用非字符串作为字符串(而不是自动使用 ToString)时如何显示错误?

    建议的重复确实是一个类似的问题 然而 答案只涵盖一种选择 禁用 ToString 本身 还有其他可能的解决方案 例如让 Visual Studio 警告我 或者不调用 ToString 仔细阅读那里的答案 他认为is调用 只是解释说没有办法
  • 用于 nmap 输出的 C++ xml 解析器

    我是 nmap 的新手 我在 nmap 教程中看到 https nmap org book man output html https nmap org book man output html oX 选项可用于获取 xml 格式的 nma
  • “显式”关键字对返回值优化 (RVO) 有何影响?

    以下代码工作得很好 显示 RVO struct A A int cout lt lt A A n constructor A const A cout lt lt A A const A n copy constructor A foo r
  • C#:如何处理乱序 TCP 数据包?

    请有人解释一下如何处理乱序数据包 我使用原始套接字来捕获数据包 并在数据包到来时解析它们 但其中一些数据包的顺序错误 例如 ID 标志 16390 PSH ACK 16535 PSH ACK 16638 确认 16640 PSH ACK 1

随机推荐

  • 在 VB.NET 中将焦点更改到另一个窗口

    我正在使用 VB NET 需要激活某个窗口 这可能吗 如果是这样 怎么办 您将需要使用 Win32 API 来执行此操作 首先 通过调用找到您想要置于前面的窗口查找窗口获取其句柄 然后使用设置前景窗口API 将其带到前台 PInvoke包含
  • 有人能给我一个 jQuery 动画函数的独立代码吗

    最近我问了这个问题 想了解Animate函数 计算和步进 我得到了答复 我尝试删除不必要的 jQuery 代码 只保留 jQuery 动画功能 如果有人能给我提供具有他们技术的 jQuery 动画函数 我将非常感激 创建动画实际上非常简单
  • wsdl 错误:标题和文档没有正确分离

    我正在使用 NUSOAP 来使用 microsoftdynamics 的肥皂接口 我收到此错误 wsdl 错误 获取https testserver2013 api crm4 dynamics com XRMServices 2011 Or
  • WQL 不支持 TOP - 需要解决方法

    WQL 基本上是 WMI 的 SQL 不支持 TOP 或 LIMIT 关键字 Sql Server 使用 TOP 和许多其他 RDBMS 支持 LIMIT 等 是否有一种解决方法可以模拟 SELECT 查询的行为 就好像它具有将结果集限制为
  • 在 NHibernate Criteria 查询中连接多个字段

    我有一个Dept表和一个Emp table 我需要以这样的方式连接这两个表where子句看起来像这样 where dept deptId emp DeptId and dept deptName emp empTrainingName 我试
  • 限制android应用程序apk的共享

    我是安卓新手 我有一个应用程序 我必须限制用户将应用程序的 apk 文件共享给其他手机 Android 手机持有者 就像如果我将 apk 文件保存在我自己的网站中 那么我希望用户可以从我的网站下载 apk 而不能与其他人共享相同的 apk
  • Google Reader API - 获取提要

    有谁知道用户是否可以调用 Google Reader 服务来获取属于特定标签 类别的所有提要的名称 uri 谢谢 您可以使用以下代码的变体来访问 Google 阅读器系统 您需要在每个请求中发送标头 Authorization auth m
  • 如何检测 mithril.js 中的模型参数更改事件?

    我最近开始学习 mithril js 我想知道如何制作非常基本的模型 gt 查看单向数据绑定应用程序 TestModel function data this name m prop data name testModel new Test
  • PHP计算时间差大于24小时

    当时间大于 24 小时时 计算时间差的最佳方法是什么 Example time1 76 00 00 time2 30 00 00 result should be 46 00 00 echo date H i s strtotime tim
  • 如何锁定文本区域的第一个单词?

    基本上我需要创建一个字符限制的文本区域 但开头有一个单词 它们无法更改 它需要成为文本区域的一部分 但我不希望用户能够删除它或编辑它 我想我可以使用创建一个 JQuery 函数blur 以防止用户退格 但我还需要防止他们选择该单词并将其删除
  • 每分钟呼叫功能

    我编写的每分钟调用一个函数的代码我认为是有缺陷的 因为它在一段时间内很好 但自页面加载以来每小时往往会落后约 15 秒 老实说 我无法弄清楚是什么导致了滞后 也许是函数执行所需的时间 小失误全部加起来并累积起来 有没有一种方法可以在调用函数
  • 如何向未存储在数据库中的 Web API 响应添加属性?

    我正在使用 Entity Framework 6 0 构建 C Web API 我有一个最简单的用户类 它有 3 个属性 我将它们通过 SQL 持久保存到具有 3 个相应列的用户表中 其中 UserID 是其主键 public partia
  • 我可以暂时为线程启用 FTZ 和 DAZ 浮点模式吗?

    我想暂时启用FTZ DAZ模式来获得某些代码的性能增益 其中严格遵守IEEE 754标准不是问题 无需更改其他线程的行为 这些线程可能正在执行代码 其中合规性很重要 我一直在读this关于如何启用 禁用这些模式以及this关于非规范处理的性
  • 引用 AssemblyInfo.cs 中的项目时,发布预编译的 ASP.NET 失败

    当我们尝试发布我们的 ASP NET 应用程序时发布期间预编译启用后 它将失败 因为我们引用了AssemblyInfo cs file 这是我们的项目结构 Project WebUI ASP NET MVC App on NET 4 6 2
  • 每次提交表单时使用触发器对工作表进行排序

    我正在尝试让 Google 表格在提交表单时自动排序 我已经能够设置脚本以使用以下内容进行排序 但它仅在手动编辑电子表格时才有效 而不是在从表单输入新数据时 function onEdit event var sheet event sou
  • 编写 XML 元素时设置属性的顺序 [重复]

    这个问题在这里已经有答案了 用java编写时如下 Element fieldEl targetDocument createElement field fieldEl setAttribute Wine Marlo fieldEl setA
  • 桌面 TCP 流式传输 (java)

    我想串流桌面屏幕截图使用套接字 我不知道具体的方法 所以我使用了 AWT 的机器人 Robot robot new Robot BufferedImage image robot createScreenCapture screenRect
  • 使用 PYODBC 将 pandas 中的数据获取到 SQL Server

    我试图了解 python 如何将数据从 FTP 服务器提取到 pandas 中 然后将其移动到 SQL 服务器中 至少可以说 我这里的代码非常初级 我正在寻求任何建议或帮助 我尝试先从 FTP 服务器加载数据 效果很好 如果我然后删除此代码
  • apk 必须使用与之前版本相同的证书进行签名

    我不久前已将我的应用程序上传到 Google Play 当时称为 Android Market 今天我更新了应用程序 但我删除了以前的密钥库并创建了一个新的 上传时 它说 APK 必须使用与以前版本相同的证书进行签名 上传失败 您上传的 A
  • 将文件的全部内容读取到 c char *,包括新行

    我正在寻找一种跨平台 Windows Linux 解决方案来将整个文件的内容读取到char 这就是我现在所拥有的 FILE stream char contents fileSize 0 Open the stream stream fop