2

テキストファイル内のテキスト単語を検索したいのですが。ただし、コードはwhileループ以外では実行されません。fgets定義の何が問題になっていますか?どうすれば修正できますか?プログラムは常に「whilemsgの外」を出力します

char repeated_data [10] = "0123456789";
char temp[512];
FILE * fp5 = fopen("/home/eagle/Desktop/temp.txt","r");
if(fp5 == NULL)
{
     perror("temp_network.txt open failed");
     exit(EXIT_FAILURE);
}

//search the text inside the temp.txt
while(fgets(temp, 512, fp5) != NULL) 
{
     printf("while msg\n");
     if((strstr(temp, repeated_data)) != NULL) 
     {
         discard_message=1;
         printf("msg is discarded msg\n");
     }
     printf("inside of while\n");
}
fclose(fp5);
printf("outside of while msg\n");
4

1 に答える 1

4

フローは正しいようです。問題を見つけるためにまだできることは、ここに記載されているように、feofとferrorをチェックすることです。

エラーが発生した場合は、nullポインタが返されます。ferrorまたはfeofのいずれかを使用して、エラーが発生したかどうか、またはファイルの終わりに到達したかどうかを確認します。

補足として、これは:

char repeated_data [10] = "0123456789";

する必要があります

char repeated_data [] = "0123456789";

また

char repeated_data [11] = "0123456789";

ヌルターミネータを忘れました。

于 2012-05-01T02:06:53.693 に答える