hkitdog
V2EX  ›  问与答

这个是什么搜索算法?

  •  
  •   hkitdog · Jul 31, 2019 via iPhone · 1242 views
    This topic created in 2512 days ago, the information mentioned may be changed or developed.
    for (;bytes_to_read;)
    这句什么含义?相当于 while(1)???

    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;

    }
    }
    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   939 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 20:22 · PVG 04:22 · LAX 13:22 · JFK 16:22
    ♥ Do have faith in what you're doing.