如何在C语言中高效地完成这类工作?
我能想到的是首先将整个文件加载到内存中,然后搜索它。。
但是有没有更有效的方法呢?
更新
如果文件非常大,则无法将整个文件加载到内存中。
最佳答案
将整个文件加载到内存中是不必要的,而且效率低下。试试这样的:
FILE *fl;
int cc = getc(fl);
while (cc != EOF)
{
if (cc=='a')
{
cc = getc(fl);
if (cc=='b')
{
cc = getc(fl);
if (cc=='c')
return "FOUND";
}
}
cc = getc(fl);
}
return "NOT FOUND";
显然你永远不会使用这样的代码。您应该编写一个函数,该函数使用任意字符串进行搜索,但算法基本相同。同时,系统将缓冲I/O,因此您不必担心一次读取单个字符的效率。我也没有包括任何错误检查。
关于c - 给定FILE *,如何有效地找到第一次出现的“abc”的偏移量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7368757/