在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