如何在文件中搜索字符串?我想一次扫描一个单词并将其与*字符串进行比较,我该怎么做?
bool searchMatch(char *string, FILE *file){
while(true){
char *buff=fgets(buff, 1024,file); //how to get one word at a time???
printf("BUFF=%s\n",buff);
if(buff == NULL) break;
if(strcmp(buff, string) == 0) return true;
}
return false;
}
答案 0 :(得分:1)
C的stdio例程并不知道“单词”是什么。您最接近的是使用fscanf()
来读取以空格分隔的字符序列:
int searchMatch(char *string, FILE *file) {
char buff[1024];
while (fscanf(file, "%1023s", buff) == 1) {
printf("BUFF=%s\n",buff);
if (strcmp(buff, string) == 0) return 1;
}
return 0;
}
这可能会也可能不会满足您对单词的定义。请注意,“示例test123”之类的内容被解释为两个词:“Example”和“test123”。
此外,您的原始代码永远不会有效,因为您没有为buff
分配空间。 fgets()
不为您分配内存,buff
必须是指向有效分配的内存块的指针。
请注意,循环条件已更改,以便在没有更多输入可用时隐式停止 - 在条件为false时让循环停止通常是一种好习惯,而不是散布一堆break
指令在它的身体里。
答案 1 :(得分:1)
尝试使用strstr()
功能,它不会逐字逐句比较,但它可以帮助您告诉string
buff
是否在 If(strstr(buff, string)) return 0;
例如:
{{1}}