Я не знаю, как решить эту проблему. У меня есть эта функция, которая печатает все файлы .txt, которые у меня есть, но мне также нужно искать и печатать после каждого имени файла некоторые конкретные строки (каждого файла), содержащие какое-то слово. Это часть, которая печатает имя файлов.Search_string в цикле разных файлов в C
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <sys/types.h>
#include <dirent.h>
int main() {
DIR* p;
struct dirent* pp;
p = opendir("./");
if (p != NULL) {
while ((pp = readdir(p)) != NULL) {
int length = strlen(pp->d_name);
if (strncmp(pp->d_name + length - 4, ".txt", 4) == 0)
puts(pp->d_name);
}
(void)closedir(p);
}
return 0;
}
мне нужно искать какие-то конкретные слова (три слова) и напечатать строку, где содержатся, это было бы три разные линии.
Прямо сейчас программа печатает это:
0_email.txt
1_email.txt
Внутри этих файлов, которые, как электронная почта, мне нужно распечатать ситемы дату, когда они были отправлены (Дата :), который (To :) и тему (Предмет:). Эта информация не всегда находится в одной строке. Я пробовал этот код, который искал слово, но я не могу выполнить поиск программы во всех файлах (потому что эти файлы могут увеличиваться и иметь разные имена, нет, я не могу это назвать по имени) и искать несколько раз
FILE *fp;
char filename[]="0_email.txt",line[200],search_string[]="To:";
fp=fopen(filename,"r");
if(!fp){
perror("could not find the file");
exit(0);
}
while (fgets (line, 200, fp) != NULL){
if(strstr(line,search_string))
fputs (line, stdout);
}
fclose (fp);
Этот второй код является один, что я нашел в Интернете, я просто научиться программирования C, и я не очень хорошо знаком с ним.
Благодарим за помощь!
Не могли бы вы быть более конкретным и показать нам пример? –
Итак, для '.txt' файлов вам нужно открыть их и прочитать часть файла и распечатать его? Тогда почему бы вам не попробовать, а не просто печатать имя файла? –
У меня есть дополнительная информация. –