打印

这个是什么搜索算法

[复制链接]
624|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
limee|  楼主 | 2019-7-20 10:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void searchfile(const char *filename, int fd, const unsigned char *value, const unsigned char *mask, int len)
{
    off_t offset = 0;
    unsigned char buf[1024];

    len--;

    while (1)
    {
        int r;

        memmove(buf, buf + sizeof(buf) - len, len);
        r = read(fd, buf + len, sizeof(buf) - len);

        if (r < 0)
        {
            perror("read");
            return;
        } else if (!r)
            return;

        int o, i;
        for (o = offset ? 0 : len; o < r; ++o)
        {
            for (i = 0; i <= len; ++i)
                if ((buf[o + i] & mask[i]) != value[i])
                    break;
            if (i > len)
            {
                unsigned long long pos = (unsigned long long)(offset + o - len);
                printf("%s: %08llx\n", filename, pos);
                if (bytes_before || bytes_after)
                    dump_context(fd, pos);
            }
        }

        offset += r;

    }
}

使用特权

评论回复

相关帖子

沙发
limee|  楼主 | 2019-7-20 10:41 | 只看该作者
for (;bytes_to_read;)
这句什么含义?相当于while(1)???

使用特权

评论回复
板凳
zxa198610| | 2019-7-21 15:18 | 只看该作者

使用特权

评论回复
地板
masmin| | 2019-7-23 13:10 | 只看该作者
limee 发表于 2019-7-20 10:41
for (;bytes_to_read;)
这句什么含义?相当于while(1)???

若bytes_to_read为真,执行 for(),否则,不执行。

使用特权

评论回复
5
zuanAY| | 2019-7-23 18:00 | 只看该作者
收藏学习

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

301

主题

475

帖子

0

粉丝