在C语言中,从文本文件中读取特定行而不读取整个文件
我想从文本文件中读取特定行,而不是逐行读取整个文件。例如,如果我在一个文本文件中有10行,并且我必须读第6行,那么我不会读前5行,而是直接读第6行。有人能帮我吗?这个问题已经回答了 引用上面的话, 除非您对该文件有更多了解,否则无法随机访问特定行。新行由行尾字符分隔,通常可以出现在任何地方。文本文件中没有允许您跳到第n行的映射或索引 如果您知道,比如说,文件中的每一行都是相同的长度,那么您可以使用随机访问跳转到特定的行。如果没有这方面的额外知识,您就别无选择,只能遍历整个文件,直到达到所需的行在C语言中,从文本文件中读取特定行而不读取整个文件,c,C,我想从文本文件中读取特定行,而不是逐行读取整个文件。例如,如果我在一个文本文件中有10行,并且我必须读第6行,那么我不会读前5行,而是直接读第6行。有人能帮我吗?这个问题已经回答了 引用上面的话, 除非您对该文件有更多了解,否则无法随机访问特定行。新行由行尾字符分隔,通常可以出现在任何地方。文本文件中没有允许您跳到第n行的映射或索引 如果您知道,比如说,文件中的每一行都是相同的长度,那么您可以使用随机访问跳转到特定的行。如果没有这方面的额外知识,您就别无选择,只能遍历整个文件,直到达到所需的行
学分:引用的答案是你可以“索引”该文件。请注意,只有当您的文本文件:
- 很大
- 经常读,很少写
- 创建新文件(索引)
- 扫描整个文本文件一次,将每行的偏移量存储在索引文件中
- 每次文本文件更改时,重复上述步骤
如果行的长度不固定,这是不可能的(如果文件不存在索引)。实际上没有办法做到这一点,因为在普通文本文件中,您无法说出行在文件中的哪个位置开始。您只需循环并读取(并丢弃)所需行之前的所有行。如果“行”具有固定长度,您可以使用
fseek
。否则,就没有办法做到这一点。