如何在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/

10-16 02:15