C strstr无法正常工作

时间:2016-03-08 08:10:46

标签: c popen fgets strstr

我正在尝试使用strstr来搜索任何使用子字符串的匹配并将其与一行文本进行比较,但到目前为止还没有成功获得匹配。我正在尝试使用ipv4地址搜索匹配时使用popen打开并读取文件。我的代码出了什么问题?任何帮助将不胜感激,谢谢。

char *buffe = malloc(sizeof(char));

        FILE *rib_file = popen("bgpdump -Mv rib.20160101.0000.bz2", "r");
        while(fgets(buffe, sizeof(buffe), rib_file)!=NULL) {
            if(buffe[strlen(buffe)-1] == '\n')
                buffe[strlen(buffe)-1] = '\0';
          for (int i = 0; i < argc; i++) {
            if((strstr(buffe, argv[i])) != NULL) {
                printf("A match found on line: %d\n", line_num);
                printf("\n%s\n", buffe);

                find_result++;
            }
                line_num++;
          }

        }
            if(find_result == 0) {
                printf("\nSorry, couldn't find a match.\n");
            }

        if (rib_file) {
            pclose(rib_file);
        }

        free(buffe);
    }

buffe的例子:

TABLE_DUMP2|01/01/16 00:00:38|B|202.232.0.3|2497|223.255.254.0/24|2497 7473 3758 55415|IGP

当我的代码找到匹配项时,我正在尝试打印上面的确切行。

1 个答案:

答案 0 :(得分:2)

sizeof函数告诉您类型的大小。由于buffe是一个指针,因此您对sizeof(buffe)的调用将获得您平台上指针的大小,这几乎肯定不是您想要的。您的意思是将fgetsbuffe点的大小传递给它吗?

相关问题