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;
}
代码解释
包含头文件:
#include <stdio.h>
:用于标准输入输出。#include <stdlib.h>
:提供了一些通用的工具函数。#include <string.h>
:用于字符串处理函数,如strstr
。
定义常量:
#define MAX_LINE_LENGTH 1024
:定义最大行长度为 1024 字符。
搜索函数:
void searchInFile(const char *filename, const char *keyword)
:用于在文件中搜索关键字。fopen
打开指定的文件,若文件无法打开则打印错误信息并返回。fgets
逐行读取文件,直到文件结束。strstr(line, keyword)
:检查当前行是否包含关键字。- 如果找到关键字,打印出所在行及其行号;否则在最后提示未找到。
主函数:
- 提示用户输入文件名和要搜索的关键字。
- 调用
searchInFile
函数进行文件检索。
编译与运行
使用以下命令编译并运行程序:
bashgcc -o file_search file_search.c ./file_search
使用示例
- 当程序运行时,输入要检索的文件名,例如
example.txt
。 - 输入要查找的关键字,例如
hello
。 - 程序会输出所有包含该关键字的行及其行号。
注意事项
- 确保指定的文件存在,并且程序有读取权限。
- 关键字搜索是大小写敏感的,如需不敏感搜索,可以考虑将行和关键字转换为小写再进行比较。
这个程序简单易用,适合用于基本的文件检索任务。