curl で取得した HTML ファイルがあり、ファイル内の特定の文字列を見つけて、期待した応答を受け取ったかどうかを分析できるようにしたいと考えていました。
文字列を検索するために使用している関数は次のとおりです。
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 配列を見ると、エンコードされているように見えますが、値は正常に見えます。