Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.09.2011, 07:43   #1
KorPaEv
Пользователь
 
Аватар для KorPaEv
 
Регистрация: 08.07.2011
Сообщений: 42
По умолчанию Алгоритм определения наличия текста в файле.

Всем доброго времени суток.
Собственно вопрос в теме.
Есть произвольный бинарный файл, содержит набор спецсимволов типа %:?*№ и т.д. и текст "Привет, это тест!"
Подскажите где копать, по поводу алгоритма определения текста в файле.
Т.е. моя задача написать функцию, которая вернет мне 1, если файл, помимо спецсимволов содержит текст.
Можно тупо загнать все символы в исключение и сканировать, но это долго и тупо.
Подскажите где можно поискать алгоритмы распознавания текста в файле (точнее наличия текста, для начала) в фйле??
Заранее спасибо.
Created by KorPaEv...
KorPaEv вне форума Ответить с цитированием
Старый 12.09.2011, 08:01   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сообщение от KorPaEv Посмотреть сообщение
Всем доброго времени суток.
Собственно вопрос в теме.
Есть произвольный бинарный файл, содержит набор спецсимволов типа %:?*№ и т.д. и текст "Привет, это тест!"
Подскажите где копать, по поводу алгоритма определения текста в файле.
Т.е. моя задача написать функцию, которая вернет мне 1, если файл, помимо спецсимволов содержит текст.
Можно тупо загнать все символы в исключение и сканировать, но это долго и тупо.
Подскажите где можно поискать алгоритмы распознавания текста в файле (точнее наличия текста, для начала) в фйле??
Заранее спасибо.
Файл это набор байт, текст это набор байт определенного диапазона (см. ANSI, UNICODE и др.). А теперь подумайте, какая вероятность, что набор байт файла не содержит не единого байта из набора текста? Верно, ничтожно мала, соответственно функция будет практически всегда возвращать, что содержит текст.

Ну а так, я уже ответил, проверять попадания байта (двух байт и больше в соответствии с кодировкой) в допустимый диапазон.
BOBAH13 вне форума Ответить с цитированием
Старый 12.09.2011, 08:13   #3
KorPaEv
Пользователь
 
Аватар для KorPaEv
 
Регистрация: 08.07.2011
Сообщений: 42
По умолчанию

Цитата:
Сообщение от BOBAH13 Посмотреть сообщение
Файл это набор байт, текст это набор байт определенного диапазона (см. ANSI, UNICODE и др.). А теперь подумайте, какая вероятность, что набор байт файла не содержит не единого байта из набора текста? Верно, ничтожно мала, соответственно функция будет практически всегда возвращать, что содержит текст.

Ну а так, я уже ответил, проверять попадания байта (двух байт и больше в соответствии с кодировкой) в допустимый диапазон.
Стало быть придется тупо загонять таблицы символов?
Created by KorPaEv...
KorPaEv вне форума Ответить с цитированием
Старый 12.09.2011, 08:47   #4
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от KorPaEv Посмотреть сообщение
Стало быть придется тупо загонять таблицы символов?
Да. Придется. Для начала определите какой набор символов может являться текстом, а потом сканируйте текст и проверяйте.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 12.09.2011, 09:10   #5
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

А как работает юниксовая команда strings?
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 12.09.2011, 10:33   #6
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сообщение от KorPaEv Посмотреть сообщение
Стало быть придется тупо загонять таблицы символов?
Либо так либо как я сказал, диапазон, т.е.
Код:
if (текущий символ >= 'a') && (текущий символ <= 'z')
Но тут снова другой вопрос, какой язык текста, + не забыть про буквы в верхнем регистре.

На самом деле, я считаю надо определить, ваши правила того, чего хотите найти в файле в итоге, я просто думаю вы сильно углубились, стоит абстрагироваться, стараться хотя бы. Перебор букв, в общем, это сильно вы углубились, лучше искать сочетание букв или слов и символов, т.е. конкретизировать поиск.
BOBAH13 вне форума Ответить с цитированием
Старый 12.09.2011, 11:00   #7
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

Цитата:
Сообщение от TinMan Посмотреть сообщение
А как работает юниксовая команда strings?
Код:
while (*p) {
    if (isprint(*p))
        printf("%c", *p);
    ++p;
}
примерно так

Цитата:
if (текущий символ >= 'a') && (текущий символ <= 'z')
господи..
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 12.09.2011, 11:37   #8
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сообщение от pproger Посмотреть сообщение
Код:
while (*p) {
    if (isprint(*p))
        printf("%c", *p);
    ++p;
}
примерно так


господи..
Я знал! Верно, так лучше, давно не писал тем более такого, на С++. В Java есть такая штука Character, просто не знал аналогичного в C++.
BOBAH13 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Алгоритм определения стоящих рядом одинаковых чисел, что не так. leshij Паскаль, Turbo Pascal, PascalABC.NET 2 12.02.2011 16:05
Необходимо переделать процедуру ooo.sum_m в функцию определения наличия отрицательных элементов ul_m Помощь студентам 4 10.01.2009 20:32
Алгоритм поиска HEX строки в файле Vlad_3310 Общие вопросы Delphi 8 17.06.2008 10:02