在C中搜索文件中的特定单词

时间:2015-12-16 10:20:29

标签: c string

美好的一天你们都试图找出文件中是否存在特定的评论或单词。不知道为什么其他部分不起作用。我该怎么做?

#include <stdio.h>
#include <string.h>

int main()
{
    FILE *fp;
    char *file = "mar";
    char *str1 = "PASS";
    char *str2 = "FAIL";
    char *find,*f;
    char line[20] ;

    fp = fopen(file, "r");

    while( fgets (line, 20, fp)!=NULL )
    {
       if((find = strstr(line,str1)) || (find = strstr(line,str2)))
          {
              printf("ok");
              break;
          }
        else//if(find != strstr(line,str1))// || (find != strstr(line,str2)))
          {
              printf("Still processing");
              break;
          }
    }

    fclose(fp);
    return(0);
}

1 个答案:

答案 0 :(得分:1)

else部分不需要任何条件。您也不需要存储strstr返回的指针,因为您不使用它。

问题可能是因为break部分中的else声明。考虑如果的任何行都会发生什么 你寻找的那些词中的任何一个:它会进入else部分并打破循环。因此,它将不再读取文件。

你的if-else可以简化为:

   if( strstr(line,str1) || strstr(line,str2) )
      {
          printf("ok");
          break; // If you want to continue searching the file after 
                 // first match, then you should remove this `break;`
      }
    else
      {
          printf("Still processing");
      }

我会避免在fgets()中硬编码数组大小。相反,循环条件可以写为:

   while( fgets (line, sizeof line, fp) ) {
      ...
   }