gpt4 book ai didi

c - C 中不同文件循环中的 Search_string

转载 作者:行者123 更新时间:2023-11-30 16:50:38 24 4
gpt4 key购买 nike

我不知道如何解决这个问题。我有这个函数可以打印我拥有的所有 .txt 文件,但我还需要在每个文件名之后搜索并打印一些包含某些单词的(每个文件的)特定字符串。这是打印文件名的部分。

#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

在这些类似于电子邮件的文件中,我需要打印发送日期(日期:)、发送者(收件人:)和主题(主题:)。这些信息并不总是在同一行。我已经尝试过这个代码,搜索这个词,但我无法让程序在所有文件中搜索(因为这个文件可以增加并且有不同的名称,不,我不能不按名称进行搜索)并搜索多次

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编程,不太熟悉。

感谢您的帮助!

最佳答案

您需要了解函数。

您大致需要以下内容:

这是未经测试的代码,仍然需要进行很多改进。它并不完全你想要的,我什至不确定它是否可以编译,但它应该让你知道你需要做什么:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <sys/types.h>
#include <dirent.h>

int CheckFile(const char *filename)
{
FILE *fp;

char 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);
}


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)
CheckFile(pp->d_name);
}

(void)closedir(p);
}

return 0;
}

关于c - C 中不同文件循环中的 Search_string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42139600/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com