美好的一天你们都试图找出文件中是否存在特定的评论或单词。不知道为什么其他部分不起作用。我该怎么做?
#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);
}
答案 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) ) {
...
}