【问题标题】:reading a file in win32win32读取文件
【发布时间】:2012-04-05 17:52:55
【问题描述】:

我正在用 win32 编写一个老式 mmorpg(它应该在非常旧的机器上运行),我想读取一个可以是 ASCII 或 Unicode(很少)的文件,并计算其中的行数它。由于这些机器的内存非常低,我不能一次在 RAM 中保留超过 4KB。

有什么想法吗? 谢谢

【问题讨论】:

  • 您只需要为文件中的一行提供足够的存储空间。如果您只需要计算行数,那也不会。只需使用 fgets() 函数。继续调用它,直到它返回 NULL。最后检查返回的字符串\n,当你看到它时增加行计数器。
  • 这是客户端还是服务器?如果没有相对大量的资源,您肯定无法制作“大型多人游戏”游戏。

标签: winapi low-memory retro-computing


【解决方案1】:

一次以小块读取文件,例如内存预算大小的 1/10。计算每个块中的行尾数。

您面临的唯一真正问题是您需要处理从一个块的末尾跨越到下一个块的开头的 cr+lf 对。

顺便说一句,您的意思肯定是 4MB 而不是 4KB?

【讨论】:

  • 它甚至可能只是通过文件达到峰值而忽略除回车和换行之外的所有内容(取决于行尾约定)。这样做实际上非常快,而且足迹几乎可以忽略不计。
  • @Mike 这正是我的提议。
  • 当他说他只能在内存中存储大约 4KB 时,读取 128KB 不会有问题吗?只是想知道。
  • @Mike 哎呀,我以为他的意思是 MB。什么版本的 Windows 不能处理 4KB 的内存?
  • 我的猜测是这是一台非常旧的电脑,否则我很难过。
【解决方案2】:

只是为了提出一些不同的建议......

type foo.txt|find /C /V "~`!@#$%^&*()_+"

或者真的只是以下我认为......已经有一段时间了

find /C /V "" foo.txt

【讨论】:

    猜你喜欢
    • 2012-05-26
    • 2012-12-22
    • 2019-06-10
    • 2010-12-17
    • 1970-01-01
    • 1970-01-01
    • 2023-02-21
    • 2015-01-24
    • 2020-03-20
    相关资源
    最近更新 更多