gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 20:48:18 25 4
gpt4 key购买 nike

功课 — 请不要使用代码。伪代码没问题。

我们只允许使用 3 个 libc 函数:read , malloc ,和free 。然而,在学校期间,我们已经实现并编写了许多我们自己版本的 libc 函数,并且我们被允许使用这些函数。我会列出它们,但大约有 50 个,所以我一定会提及哪些是我不能使用的。

我的问题...我必须采取哪些步骤才能从文件中读取一行并将该行存储为字符串,而无需 \n ?有人能引导我完成整个过程吗?因为现在我什至不知道从哪里开始。我知道如何使用 read,并且我认为自己的 C 技能水平介于初级和中级之间,但是在花了一整天的时间搜索 Google 后,每次问同样的问题时,接受的答案总是涉及使用 fgetsgetline ,出于显而易见的原因,我们不被允许使用它。我已经实现了许多 libc 函数的我自己的版本,这些函数可能会对这个项目有所帮助,但任何能让这个项目变得快速和简单的东西显然都是不允许的。

再次强调,请不要使用代码,虽然伪代码很好,但如果有人可以帮助我更好地理解我需要“告诉计算机”做什么,我会更喜欢它,从那里我应该没问题自己编写代码。

最佳答案

读取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 \0
return buffer (calling code needs to eventual free it.)

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

  1. 性能:从文件中读取,一次可能是 4k 字节。

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

  3. 增强鲁棒性并检查分配失败。

关于C - 一次从文件读取 1 行,而不使用 fgets/getline,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43814390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com