1、逐行读取并使用strstr
通过fgets
逐行读取文件内容,并使用strstr
函数在每一行中查找单词。
#include <stdio.h> #include <string.h> // 逐行读取并使用strstr void find_word_in_file_method1(const char *filename, const char *word) { FILE *file = fopen(filename, "r"); if (file == NULL) { printf("无法打开文件\n"); return; } char line[1024]; int line_number = 1; while (fgets(line, sizeof(line), file)) { if (strstr(line, word)) { printf("在第 %d 行找到: %s", line_number, line); } line_number++; } fclose(file); } // 主函数 int main() { const char *filename = "test.txt"; const char *word = "example"; const char *pattern = "example"; printf("逐行读取并使用strstr\n"); find_word_in_file_method1(filename, word); return 0; }
2、逐字节读取并手动匹配
逐字节读取文件内容,手动检查是否匹配单词。
#include <stdio.h> #include <string.h> void find_word_in_file(const char *filename, const char *word) { FILE *file = fopen(filename, "r"); if (file == NULL) { printf("无法打开文件\n"); return; } int word_len = strlen(word); int pos = 0; char ch; int match = 0; while ((ch = fgetc(file)) != EOF) { if (ch == word[match]) { match++; if (match == word_len) { printf("找到单词: %s\n", word); match = 0; } } else { match = 0; } } fclose(file); } // 主函数 int main() { const char *filename = "test.txt"; const char *word = "example"; const char *pattern = "example"; printf("\n逐字节读取并手动匹配\n"); find_word_in_file(filename, word); return 0; }
3、使用正则表达式库
使用PCRE库来查找符合正则表达式模式的单词。
#include <stdio.h> #include <string.h> #include <pcre.h> void find_word_in_file(const char *filename, const char *pattern) { FILE *file = fopen(filename, "r"); if (file == NULL) { printf("无法打开文件\n"); return; } char line[1024]; int line_number = 1; const char *error; int error_offset; pcre *re = pcre_compile(pattern, 0, &error, &error_offset, NULL); if (re == NULL) { printf("PCRE编译错误\n"); return; } while (fgets(line, sizeof(line), file)) { int ovector[30]; int rc = pcre_exec(re, NULL, line, strlen(line), 0, 0, ovector, 30); if (rc >= 0) { printf("在第 %d 行找到: %s", line_number, line); } line_number++; } pcre_free(re); fclose(file); } // 主函数 int main() { const char *filename = "test.txt"; const char *word = "example"; const char *pattern = "example"; printf("\n使用正则表达式库\n"); find_word_in_file(filename, word); return 0; }