我想对一个大文件执行一些冗长的操作,这将涉及大量的搜索。 (该程序的当前版本需要5个小时,并且使用fseek至少15057,456次。)因此,我希望将文件加载到ram中,并使用char*
而不是FILE*
。如果我:
char*
数组中
newchar = *(pointertothearray+offset)
),避免strcpy
或strstr
等操作?答案 0 :(得分:6)
您可以将整个文件加载到动态char数组(堆上的malloc)中,即使其中包含空字符:空字符 有效{{1} }。
但你不能称之为字符串。 C字符串来自语言规范的空终止字符数组。
因此,只要您只使用偏移量,char
函数和无mem...
函数,char数组中的空字符就没有问题。
答案 1 :(得分:0)
您可以将整个文件的内容加载到内存中。本质上,这个缓冲区将是一个字节流,而不是一个字符串。