如何检查文件中的字符串作为整个单词?
例如,当我使用strstr()并搜索单词“google”时,它包含google
和agoogle
。我想从C中的文本文件中逐字逐句阅读。
我使用fgets,它从文本文件中读取整行。
我必须找到单词google的出现,而不是以前的
这是代码 我在argv中有 google 这个词[3]
FILE *ptr;
ptr=fopen(argv[4],"r+");
if(ptr!=NULL)
{
while(fgets(temp,521,ptr)!=NULL)
{
strlwr(temp);
if(strstr(temp,argv[3])!=NULL)
{
//printf("\nOne %s",temp);
line_count++;
}
}
printf("L:%d",line_count);
}//end of inner else
}//end of else
getch();
答案 0 :(得分:1)
使用
从文件中获取一行fgets();
然后使用strtok()
将您的行划分为以空格作为分隔符的单词。(分隔符可能是任何因为我们无法看到您的输入文件,相应地设置分隔符)
strtok()
返回的每个令牌都可以用来检查字符串。
应该重复相同的步骤,直到EOF。
您对strstr()
的理解是错误的。
答案 1 :(得分:1)
您可以将fscanf()
与说明符"%s"
一起使用。
fscanf()
允许你阅读单词。分隔词是空格。
空格字符包括空格,换行符和制表符:
' ' (0x20) space (SPC)
'\t' (0x09) horizontal tab (TAB)
'\n' (0x0a) newline (LF)
'\v' (0x0b) vertical tab (VT)
'\f' (0x0c) feed (FF)
'\r' (0x0d) carriage return (CR)
答案 2 :(得分:0)
请检查strstr()
的{{3}}。
char *strstr(const char *haystack, const char *needle);
它说,
返回指向子字符串开头的指针,如果找不到子字符串则返回NULL。
因此,显然,在搜索google
时,它不会返回agoogle
和google
。究竟是什么问题?
接下来,word by word from a text file in C
,
使用fgets()
读取完整的行,并使用空格作为分隔符来取出每个单词。使用
strok()
[或strtok_r()
,如果扩展名提供的话
使用fscanf()