在HTML文件中查找字符串C

我有一个通过curl检索到的HTML文件,我想查找文件中的某些字符串,以便分析我是否收到了预期的响应。在HTML文件中查找字符串C

下面是我使用的搜索我的字符串函数:

int find_str(FILE *infile, char *str) 

{

char tmp[512];

while(fgets(tmp, sizeof(tmp), infile) != NULL)

{

if (strstr(tmp, str) != NULL)

{

printf("found %s in file\n", str);

return 1;

}

}

fprintf(stderr, "Couldn't Find %s in file!\n", str);

return 0;

}

,这就是所谓如下:

if(find_str(html_file, "<h1>Hello World</h1>") == 1) 

{ ... }

首先,字符串没有找到,即使它是存在的。其次,如果第一个应用程序失败,则在另一个if语句中调用此函数,但在调试器中观察执行时,它会完全跳过while循环。没有给出垃圾值。如果我观看tmp数组,这些值看起来很正常,尽管它们似乎已经被编码了。

回答:

使用该函数,如果您的搜索字符串位于文件的512字节边界附近,则它将不匹配,因为您只能在512字节块内进行检查。

要解决此问题,可以将整个文件加载到内存中。如果您决定多次搜索,这也对性能有利,因为您不必每次都进行I/O操作。

这应该工作到文件读入内存:

fseek (infile, 0 , SEEK_END); 

int filesize = ftell (infile);

rewind (infile);

char *whole_file = malloc(filesize+1);

if (!(filesize == fread(whole_file, filesize, 1, infile))) {

// ERROR

}

whole_file[filesize] = '\0';

以上是 在HTML文件中查找字符串C 的全部内容, 来源链接: utcz.com/qa/261310.html

回到顶部