Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Количество строк для текстовых файлов 
V
    Опции темы
Nope
Дата 28.8.2008, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 3.7.2006

Репутация: нет
Всего: нет



есть список файлов и директорий, находящихся в некоторой заданной директории директории. задача: для всех текстовых файлов в заданной директории вывести количество строк. как определить количество строк - понятно, wc в помощь. вопрос: как в программе узнать тип файла текстовой он или какой-либо другой, в том числе нужно отбрасывать и директории? под текстовым фалом можно подразумевать любой файл, для которого результат работы команды file вернет строку, содержащую "text".
PM MAIL   Вверх
andrew_121
Дата 28.8.2008, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 3
Всего: 33



Nope, Запускай для каждого файла file, парсь результат. И, в зависимости от результата принимай решение - да, нет.
Кол-во строк = кол-во символов "\n". Или в цикле вызываешь fgets() пока не коней файла, при этом инкрементируешь счетчик.



--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
MAKCim
Дата 28.8.2008, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата(Nope @  28.8.2008,  00:03 Найти цитируемый пост)
как в программе узнать тип файла текстовой он или какой-либо другой, в том числе нужно отбрасывать и директории?

файл или директория? поможет stat (man 2 stat)
текстовый файл? прочитай первые 32 байта, если все символы читаемые (+ \n, \r), значит текстовый


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Nope
Дата 28.8.2008, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 3.7.2006

Репутация: нет
Всего: нет



Цитата(andrew_121 @ 28.8.2008,  00:11)
Nope, Запускай для каждого файла file, парсь результат. И, в зависимости от результата принимай решение - да, нет.
Кол-во строк = кол-во символов "\n". Или в цикле вызываешь fgets() пока не коней файла, при этом инкрементируешь счетчик.

Подскажите пожалуйста как получить результат работы file в переменную, если не трудно с небольшим куском кода в качестве примера smile 
PM MAIL   Вверх
MAKCim
Дата 28.8.2008, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата(Nope @  28.8.2008,  10:41 Найти цитируемый пост)
Подскажите пожалуйста как получить результат работы file в переменную, если не трудно с небольшим куском кода в качестве примера

Код

char cmd[128];
char res[256];
size_t index = 0, size = 256;
sprintf(cmd, "file %s", PATH);
FILE * pfs = popen(cmd, "r");
if (pfs == NULL) { /* error */ }
while (!feof(pfs) && !ferror(pfs)) {
    if (index == size)
        break;
    index += fread(res + index, sizeof(char), size - index, pfs);
}
if (ferror(pfs)) { /* error */ }
pclose(pfs);


Это сообщение отредактировал(а) MAKCim - 28.8.2008, 11:06


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Nope
Дата 28.8.2008, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 3.7.2006

Репутация: нет
Всего: нет



Спасибо
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0910 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.