Поиск в бинарном файле (как?)

Модератор: Модераторы разделов

deber
Сообщения: 4

Поиск в бинарном файле

Сообщение deber »

Здравствуйте!

Подскажите пожалуйста, как мне сделать поиск в бинарном файле?
У меня есть моя программка, но она ищет только в текстовых файлах.

Вот моя программка:

Код: Выделить всё

#include <stdio.h>
#include <string.h>
#include <ctype.h>

char* strlwr(char*);

int main(int argc, char *argv[]) {
    FILE *fd;
    char buffer[255];
    int bufflen;
    char *result;
    bufflen = 255;

    if (argc != 2) {
    printf("\nUsage: find_str <file>\n\n");
    exit(1);
    }

    if ((fd = fopen(argv[1], "r")) == NULL) {
    fprintf(stderr, "\"%s\": don't open\n", argv[1]);
    exit(1);
    }

    while (result = fgets(buffer, bufflen, fd)) {
    result = strlwr(result);
    //printf(result);
    if (strstr(result, "what_find")) {
        printf("I finded it!\n");
    }
    }

    fclose(fd);
    return 0;
}

char* strlwr(char* str) {
    int i;
    int lg = strlen(str);

    for (i=0; i<lg; i++)
    str[i] = tolower(str[i]);

    return str;
}


Когдя я добавил "b" в эту строку: if ((fd = fopen(argv[1], "rb")) == NULL)
то все, что я получил - это segmentation fault.

Помогите пожалуйста.
Еще я нашел исполняемую программу /usr/bin/strings - она классно работает. Мне также надо просматривать файл. А исходника у меня нет. Да и здоровый он наверно. Мне простенько надо.
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: Поиск в бинарном файле

Сообщение elide »

с бинарниками проблема в том, что в нем содержатся символы '\0'
что портит всю работу с ними....
у strings очень маленкий сырец, строк эдак 600 с комментариями...
слава роботам!
Спасибо сказали:
deber
Сообщения: 4

Re: Поиск в бинарном файле

Сообщение deber »

elide писал(а):
28.10.2005 15:05
с бинарниками проблема в том, что в нем содержатся символы '\0'
что портит всю работу с ними....

Вот оно в чем дело :(
Спасибо за strings!!!!!!
Спасибо сказали: