gpt4 book ai didi

c - 在 C 语言中搜索文件中的特定单词

转载 作者:行者123 更新时间:2023-11-30 15:13:50 26 4
gpt4 key购买 nike

大家好,我一直在尝试查找文件中是否存在特定的评论或单词。不知道为什么其他部分不起作用。我该怎么做?

#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);
}

最佳答案

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

问题可能是由于 else 部分中的 break 语句造成的。考虑一下如果任何一行有会发生什么您查找的任何一个单词:它将进入 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) ) {
...
}

关于c - 在 C 语言中搜索文件中的特定单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34309359/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com