【问题标题】:Searching text file for matching string搜索匹配字符串的文本文件
【发布时间】:2015-01-18 20:21:02
【问题描述】:

当谈到 C 时,我完全是个业余爱好者,我在尝试编写这段代码时遇到了一些麻烦。我希望它检查文本文件中是否存在与给定字符串匹配的任何行。

例如,如果“stackoverflow”在文本文件中并且我输入的字符串是“www.stackoverflow.com”,它应该返回一个正匹配。

但目前它正在搜索文本文件中的字符串,这与我想要的相反。我将不胜感激任何提示/提示!

int Check(char *fname, char *str) {
FILE *file;
int i = 1;
int r = 0;
char temp[1000];

if((file = fopen(fname, "r")) == NULL) {
    return(-1);
}

while(fgets(temp, 1000, file) != NULL) {

    if((strstr(temp, str)) != NULL) {
        printf("Host name found on line: %d\n", i);
        printf("\n%s\n", str);
        r++;
    }
    i++;
}

if(r == 0) {
    printf("\nHost name not blocked.\n");
}

if(file) {
    fclose(file);
}
return(0);
}

【问题讨论】:

  • 您好,欢迎来到 StackOverflow!你试过用strstr(str, temp)切换strstr(temp, str)吗?
  • 是的,但是当我尝试这样做时,即使我比较的字符串相同,我也不会得到任何结果。
  • 请记住 fgets 捕获尾随换行符 (\n);你可能需要自己把它去掉。
  • 您要比较的一个或两个字符串的末尾是否有空格(行尾字符,如\r 和/或\n)?
  • @Piglet 我很高兴你让它工作了:)。您应该发布您的答案,然后将其标记为已接受,以便其他用户看到它。

标签: c


【解决方案1】:

为什么不使用 getline() 获取逐行缓冲区,然后在该缓冲区中执行 strstr() ?

【讨论】:

猜你喜欢
  • 2017-07-04
  • 2020-06-17
  • 2018-04-09
  • 2019-07-28
  • 2013-08-02
  • 1970-01-01
  • 2014-03-18
  • 2017-10-15
  • 2011-08-07
相关资源
最近更新 更多