【发布时间】:2020-07-14 12:35:20
【问题描述】:
我有一个大小为 1GB 的文件。我想知道在文件中找到了多少次“sosowhat”这个词。我已经使用 fgetc() 编写了一个代码,它一次从文件中读取一个字符,对于 1GB 大小的文件来说这太慢了。所以我创建了一个大小为 1000 的缓冲区(使用 mmalloc)来一次保存文件中的 1000 个单词,我使用 strstr() 函数来计算单词“sosowhat”的出现次数。逻辑很好。但问题是,如果“sosowhat”的“so”部分位于缓冲区的末尾,而“sowhat”部分位于新缓冲区中,则不会计算该单词。所以我使用了两个缓冲区 old_buffer 和 current_buffer。在每个缓冲区的开头,我想检查旧缓冲区的最后几个字符。这可能吗?我怎样才能回到旧缓冲区?没有 memmove() 可以吗?作为初学者,我会非常乐意为您提供帮助。
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。