在文件中查找单词?

时间:2014-02-08 22:47:11

标签: c string file

如何在文件中搜索字符串?我想一次扫描一个单词并将其与*字符串进行比较,我该怎么做?

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;

}

2 个答案:

答案 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}}