c语言编写一个文件检索程序

下面是一个用 C 语言编写的简单文件检索程序,它能够读取指定文件中的内容,并根据用户输入的关键字进行搜索。

示例代码

c
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_LINE_LENGTH 1024 void searchInFile(const char *filename, const char *keyword) { FILE *file = fopen(filename, "r"); // 打开文件以读取 if (file == NULL) { perror("无法打开文件"); return; } char line[MAX_LINE_LENGTH]; int lineNumber = 0; int found = 0; while (fgets(line, sizeof(line), file)) { // 逐行读取文件 lineNumber++; if (strstr(line, keyword) != NULL) { // 查找关键字 printf("在第 %d 行找到: %s", lineNumber, line); found = 1; // 设置找到标志 } } if (!found) { printf("未找到关键字 '%s'\n", keyword); } fclose(file); // 关闭文件 } int main() { char filename[256]; char keyword[256]; printf("请输入文件名: "); scanf("%s", filename); printf("请输入要搜索的关键字: "); scanf("%s", keyword); searchInFile(filename, keyword); // 调用检索函数 return 0; }

代码解释

  1. 包含头文件:

    • #include <stdio.h>:用于标准输入输出。
    • #include <stdlib.h>:提供了一些通用的工具函数。
    • #include <string.h>:用于字符串处理函数,如 strstr
  2. 定义常量:

    • #define MAX_LINE_LENGTH 1024:定义最大行长度为 1024 字符。
  3. 搜索函数:

    • void searchInFile(const char *filename, const char *keyword):用于在文件中搜索关键字。
    • fopen 打开指定的文件,若文件无法打开则打印错误信息并返回。
    • fgets 逐行读取文件,直到文件结束。
    • strstr(line, keyword):检查当前行是否包含关键字。
    • 如果找到关键字,打印出所在行及其行号;否则在最后提示未找到。
  4. 主函数:

    • 提示用户输入文件名和要搜索的关键字。
    • 调用 searchInFile 函数进行文件检索。

编译与运行

使用以下命令编译并运行程序:

bash
gcc -o file_search file_search.c ./file_search

使用示例

  1. 当程序运行时,输入要检索的文件名,例如 example.txt
  2. 输入要查找的关键字,例如 hello
  3. 程序会输出所有包含该关键字的行及其行号。

注意事项

  • 确保指定的文件存在,并且程序有读取权限。
  • 关键字搜索是大小写敏感的,如需不敏感搜索,可以考虑将行和关键字转换为小写再进行比较。

这个程序简单易用,适合用于基本的文件检索任务。