如何从C中的文件中读取最后n行

2024-03-18

这是一道微软面试题。

使用 C 读取文件的最后 n 行(精确地)

实现这一目标的方法有很多,但其中很少有:

-> 最简单的是,在第一遍中,计算文件中的行数,在第二遍中显示最后 n 行。

-> 或者可以为每一行维护一个双向链表,并通过向后遍历链表直到第 n 个最后节点来显示最后 n 行。

-> 实现一些类似 tail -n fname 的东西

-> 为了进一步优化它,我们可以使用长度为 n 的双指针,并且以循环方式动态存储每一行​​,直到到达文件末尾。

例如,如果文件中有 10 行并且想要读取最后 3 行。然后我们可以创建一个缓冲区数组作为 buf[3][] ,并且在运行时将继续以循环方式分配和释放缓冲区,直到到达最后一行并保留一个计数器来了解数组的当前索引。

任何人都可以帮助我提供更优化的解决方案,或者至少指导我是否上述任何方法可以帮助我获得正确的答案或此类问题的任何其他流行的方法/方法。


您可以使用队列并存储在此队列中看到的最后 n 行。当您看到 eof 时,只需打印队列即可。

另一种方法是从文件末尾向开头读取 1024 字节的块。当你发现时就停下来n \n字符并打印出最后一个n lines.

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

如何从C中的文件中读取最后n行 的相关文章

  • 添加对共享类的多个 WCF 服务的服务引用

    我正在尝试将我的 WCF Web 服务拆分为几个服务 而不是一个巨大的服务 但是 Visual Studio Silverlight 客户端 复制了两个服务共享的公共类 这是一个简单的例子来说明我的问题 在此示例中 有两个服务 两者都返回类
  • 为什么基类必须有一个带有 0 个参数的构造函数?

    这不会编译 namespace Constructor0Args class Base public Base int x class Derived Base class Program static void Main string a
  • 通信对象 System.ServiceModel.Channels.ServiceChannel 不能用于通信

    通信对象System ServiceModel Channels ServiceChannel 无法用于通信 因为它处于故障状态 这个错误到底是什么意思 我该如何解决它 您收到此错误是因为您让服务器端发生 NET 异常 并且您没有捕获并处理
  • 在 C++11 中省略返回类型

    我最近发现自己在 C 11 模式下的 gcc 4 5 中使用了以下宏 define RETURN x gt decltype x return x 并编写这样的函数 template
  • ZLIB 解压缩

    我编写了一个小型应用程序 该应用程序应该解压缩以 gzip deflate 格式编码的数据 为了实现这一点 我使用 ZLIB 库 使用解压缩功能 问题是这个功能不起作用 换句话说 数据不是未压缩的 我在这里发布代码 int decompre
  • 获取从属性构造函数内部应用到哪个属性的成员?

    我有一个自定义属性 在自定义属性的构造函数内 我想将属性的属性值设置为属性所应用到的属性的类型 是否有某种方式可以访问该属性所应用到的成员从我的属性类内部 可以从 NET 4 5 using CallerMemberName Somethi
  • 禁用 LINQ 上下文的所有延迟加载或强制预先加载

    我有一个文档生成器 目前包含约 200 个项目的查询 但完成后可能会超过 500 个 我最近注意到一些映射表示延迟加载 这给文档生成器带来了一个问题 因为它需要根据生成的文档来访问所有这些属性 虽然我知道DataLoadOptions可以指
  • C++派生模板类继承自模板基类,无法调用基类构造函数[重复]

    这个问题在这里已经有答案了 我试图从基类 模板 继承 派生类也是模板 它们具有相同的类型 T 我收到编译错误 非法成员初始化 Base 不是基类或成员 为什么 如何调用基类构造函数 include
  • 范围和临时初始化列表

    我试图将我认为是纯右值的内容传递到范围适配器闭包对象中 除非我将名称绑定到初始值设定项列表并使其成为左值 否则它不会编译 这里发生了什么 include
  • 组合框项目为空但数据源已满

    将列表绑定到组合框后 其 dataSource Count 为 5 但组合框项目计数为 0 怎么会这样 我习惯了 Web 编程 而且这是在 Windows 窗体中进行的 所以不行combo DataBind 方法存在 这里的问题是 我试图以
  • 在 C 中复制两个相邻字节的最快方法是什么?

    好吧 让我们从最明显的解决方案开始 memcpy Ptr const char a b 2 调用库函数的开销相当大 编译器有时不会优化它 我不会依赖编译器优化 但即使 GCC 很聪明 如果我将程序移植到带有垃圾编译器的更奇特的平台上 我也不
  • UWP 无法在两个应用程序之间创建本地主机连接

    我正在尝试在两个 UWP 应用程序之间设置 TCP 连接 当服务器和客户端在同一个应用程序中运行时 它可以正常工作 但是 当我将服务器部分移动到一个应用程序并将客户端部分移动到另一个应用程序时 ConnectAsync 会引发异常 服务器未
  • Qt - 设置不可编辑的QComboBox的显示文本

    我想将 QComboBox 的文本设置为某些自定义文本 不在 QComboBox 的列表中 而不将此文本添加为 QComboBox 的项目 此行为可以在可编辑的 QComboBox 上实现QComboBox setEditText cons
  • C# 搜索目录中包含字符串的所有文件,然后返回该字符串

    使用用户在文本框中输入的内容 我想搜索目录中的哪个文件包含该文本 然后我想解析出信息 但我似乎找不到该字符串或至少返回信息 任何帮助将不胜感激 我当前的代码 private void btnSearchSerial Click object
  • 过期时自动重新填充缓存

    我当前缓存方法调用的结果 缓存代码遵循标准模式 如果存在 则使用缓存中的项目 否则计算结果 在返回之前将其缓存以供将来调用 我想保护客户端代码免受缓存未命中的影响 例如 当项目过期时 我正在考虑生成一个线程来等待缓存对象的生命周期 然后运行
  • Fluent NHibernate 日期时间 UTC

    我想创建一个流畅的 nhibernate 映射来通过以下方式映射 DateTime 字段 保存时 保存 UTC 值 读取时 调整为本地时区值 实现此映射的最佳方法是什么 就我个人而言 我会将日期存储在 UTC 格式的对象中 然后在读 写时在
  • 运行代码首先迁移更新数据库时出错

    我在迁移到数据库时遇到问题 并且似乎找不到我遇到的错误的答案 System MissingMethodException Method not found System Data Entity Migrations Builders Tab
  • 过度使用委托对性能来说是一个坏主意吗? [复制]

    这个问题在这里已经有答案了 考虑以下代码 if IsDebuggingEnabled instance Log GetDetailedDebugInfo GetDetailedDebugInfo 可能是一个昂贵的方法 因此我们只想在调试模式
  • boost::program_options:带有固定和可变标记的参数?

    是否可以在 boost program options 中使用此类参数 program p1 123 p2 234 p3 345 p12 678 即 是否可以使用第一个标记指定参数名称 例如 p 后跟一个数字 是动态的吗 我想避免这种情况
  • 如何使用 std::array 模拟 C 数组初始化“int arr[] = { e1, e2, e3, ... }”行为?

    注意 这个问题是关于不必指定元素数量并且仍然允许直接初始化嵌套类型 这个问题 https stackoverflow com questions 6111565 now that we have stdarray what uses are

随机推荐

  • SignalR 和 HttpContext/Session

    我明白为什么 SignalR 不给你访问 HttpContext https stackoverflow com questions 7854663 signalr doesnt use session on server 然而 这对我们来
  • 从派生类中删除虚函数

    我有一个虚拟基类函数 它永远不应该在特定的派生类中使用 有没有办法 删除 它 我当然可以给它一个空定义 但我宁愿让它尝试使用时抛出编译时错误 C 11delete说明符似乎是我想要的 但是 class B virtual void f cl
  • 在同一项目中使用亚音速 2.x 和 3.x

    可以将它们混合吗 我这么问是因为我有一个大项目使用 Subsonic 2 x 生成的类 在编译的 dll 中 但想开始使用 3 x 来处理新东西 我昨晚在一个项目中尝试了它 其中我引用了 subsonic dll 和 subsonic co
  • 如何在 po gettext 文件中将空翻译 (msgstr) 标记为已翻译?

    我发现字符串 msgid 的翻译为空 所有 gettext 工具都会将该字符串视为未翻译 有解决方法吗 我确实想要一个空字符串作为该项目的翻译 由于这似乎是 gettext 规范中的一个很大的设计缺陷 我决定使用 Unicode Chara
  • Spark Streaming数据放入HBase的问题

    我是这个领域的初学者 所以我无法理解它 HBase 版本 0 98 24 hadoop2 火花版本 2 1 0 以下代码尝试将从 Spark Streming Kafka 生产者接收的数据放入 HBase 中 Kafka输入数据格式是这样的
  • 点“.”的 java keyevent 字段是什么?

    我知道如何使用 keyevent 调用 1 应该像 aaa keyPress KeyEvent VK 1 现在我需要输入 点 但我找不到 KeyEvent VK DOT 或一些类似的命令 请帮忙 Thanks 这个 点 被称为period
  • 如何使用带有条纹元素的引导浮动标签?

    我想知道如何使用浮动标签设置条纹元素的样式 bootstrap 5 我的所有其他字段都采用这种方式设计 因此最好对信用卡输入和 cvv 输入进行设计 以匹配我网站的主题 我尝试过使用以下答案 如何使用 Bootstrap 设置 Stripe
  • 从本地开发环境访问ElastiCache memcache实例

    有没有办法从本地开发环境访问缓存节点 尽管可以从 EC2 实例访问相同的缓存节点 我正在使用带有 C 的 Enyim memcache 客户端库 我发现很少有文章说这是不可能的 那么最好的方法应该是什么 我是否需要在本地设置内存缓存以进行开
  • 最流行的 C 通用集合数据结构库是什么?

    我正在寻找一个提供通用集合数据结构 例如列表 关联数组 集合等 的 C 库 该库应该稳定且经过良好测试 我基本上是在寻找比蹩脚的 C 标准库更好的东西 哪些 C 库符合此描述 编辑 我希望该库是跨平台的 但如果做不到这一点 任何可以在 Ma
  • 将数据存储在自定义字段中或将附件存储在 ics iCal 文件中

    我需要为我手动构建的 iCal 文件 ics 提供一些我实际上不希望日历应用程序用户看到的附加信息 因此 当我在 iOS 应用程序中创建事件并 稍后 从日历事件中读取它们时 我需要能够手动设置它们 我想知道是否可以将自定义字段 属性添加到
  • 使用 dplyr 进行 SQL in-db 操作时的 ifelse 和 grepl 命令

    在R数据帧上运行的dplyr中 很容易运行 df lt df gt mutate income topcoded ifelse income gt topcode income topcode 我现在正在使用一个大型 SQL 数据库 使用
  • SharePoint Designer 动态重新格式化 HTML,是否可以禁用?

    在我彻底放弃之前 我一直在尝试修改 SharePoint Designer 中的一些母版页 每当我更改 HTML 标记时 它都会根据需要重新设置它们的格式 例如 我试图使代码可读 因此我将项目移动到自己的行等 一旦我保存 它就会将所有内容移
  • 将数据从 s3 复制到带有前缀的本地

    我正在尝试使用 aws cli 将数据从 s3 复制到带有前缀的本地 但我在使用不同的正则表达式时遇到错误 aws s3 cp s3 my bucket name RAW TIMESTAMP 0506 profile prod error
  • DirectQuery 模式下的 AAS 表格模型性能优势

    假设您有 10 个相当大的事实表 每个 50 100 GB 应该使用 Power BI 进行查询 它们不适合 Azure Analysis Services RAM 价格合理 因此 为了使用表格模型和 AAS 您必须使用以下模式 1 Pow
  • 如何在 Playframework 中将 Oracle 存储过程与 Scala Anorm 结合使用

    我有许多存储过程 其结果是字符串列表 我如何使用scala访问play 2 0框架中的refcurser 有人可以举一个简单的例子 我如何填写一个列表吗 我试过这个 case class XXXX name String descripti
  • 为什么 UIView 中有一个框架矩形和一个边界矩形?

    好吧 虽然已经是深夜了 但我不明白为什么有两个不同的矩形 frame and bounds 据我了解 一个矩形就足以完成所有操作 相对于另一个坐标系定位视图本身 然后将其内容剪切到指定的大小 你还想用两个矩形做什么 他们如何相互作用 有人有
  • 通过循环在renderUI中创建Value Box

    我想根据我拥有的数据创建一个值框 假设我有 5 个数据变量consumerdata像这样 id data number1 number2 1 k4j A 67 53 2 rls B 30 62 3 yv9 C 45 28 4 l6h D 6
  • 如何在 Eclipse 中使用 SonarLint

    我被分配使用 SonarQube 来提高代码质量 但是当我将它的插件下载到 Eclipse 时 我知道它已被弃用 新的 插件是 SonarLint 但到目前为止 我找不到任何关于如何使用 SonarLint 的好的文档 如何使用它检查jav
  • Delphi 2010远程调试-无法使断点工作

    我最近发布了这个问题 https stackoverflow com questions 4579654 no breakpoints when remote debugging with delphi 2010 so stuck on d
  • 如何从C中的文件中读取最后n行

    这是一道微软面试题 使用 C 读取文件的最后 n 行 精确地 实现这一目标的方法有很多 但其中很少有 gt 最简单的是 在第一遍中 计算文件中的行数 在第二遍中显示最后 n 行 gt 或者可以为每一行维护一个双向链表 并通过向后遍历链表直到