搜索(第六节)

让我们使用editorPrompt()来实现一个简单的搜索功能。当用户输入一个搜索查询并按下回车键时,我们将遍历文件的所有行。如果某一行包含用户输入的查询字符串,我们就将光标移动到匹配的位置。

kilo.c
步骤131
基本搜索

/*** 包含的头文件 ***/
/*** 宏定义 ***/
/*** 数据 ***/
/*** 函数原型声明 ***/
/*** 终端相关操作 ***/
/*** 行操作 ***/
/*** 编辑器操作 ***/
/*** 文件输入输出 ***/
char *editorRowsToString(int *buflen) { … }
void editorOpen(char *filename) { … }
void editorSave() { … }
/*** 查找 ***/
void editorFind() {
  char *query = editorPrompt("搜索: %s (按ESC取消)");
  if (query == NULLreturn;
  int i;
  for (i = 0; i < E.numrows; i++) {
    erow *row = &E.row[i];
    char *match = strstr(row->render, query);
    if (match) {
      E.cy = i;
      E.cx = match - row->render;
      E.rowoff = E.numrows;
      break;
    }
  }
  free(query);
}
/*** 追加缓冲区 ***/
/*** 输出 ***/
/*** 输入 ***/
/*** 初始化 ***/

编译通过,但没有可观察到的效果
strstr()函数来自<string.h>头文件。

扫描二维码关注微信公众号,回复密码,即可获取密码

阅读剩余
THE END