C-一次从文件1行读取而无需使用fgets / getline



上学 - 请不要代码。伪代码OK。

我们只允许使用3个LIBC函数:readmallocfree。但是,在学校的过程中,我们已经实施并编写了许多自己的LIBC功能,并且我们> 允许使用。我会列出它们,但大约有50个

我的问题...我必须采取哪些步骤才能从文件中读取一行并将该行作为字符串存储,而没有n?有人可以带我完成这一过程吗?因为现在,我什至不知道从哪里开始。我知道如何使用阅读,并且我会认为自己在初学者和中级技能之间的某个位置,但是在整天搜索Google之后,每次都问过同样的问题时,接受的答案总是涉及使用fgetsgetline,出于明显的原因,我们不允许使用它。我已经实施了许多LIBC功能的版本,这些版本可能在该项目中有可能有所帮助,但是任何可以使该项目快速而容易的东西显然不允许。

再次,请不要代码,尽管伪代码很好,但是如果有人可以帮助我更好地理解我需要"告诉计算机"要做的事情,我会更喜欢它,从那里我应该很好自己写代码。

pseudo代码读取1行

    buffer to 0, size to 0, size_used to 0
    loop
      read 1 character
      no success? - break loop
      size_used >= size
         make buffer bigger (maybe 2x, at least 1)
         [This involves allocating a new buffer, copy existing data, freeing old buffer]
      add character to buffer
      was character a n? - break loop
    Nothing read? 
      return NULL
    right-size buffer to size_used+1
    append 
    return buffer  (calling code needs to eventual free it.)

可以提高大量效率。我建议从基本版本开始,使功能正确,然后考虑改进,例如

  1. 性能:从文件中读取,也许是4K字节。

  2. 性能:重新使用返回的缓冲区。

  3. 使强大并检查分配失败。

最新更新