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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск по маске в BSD, нужно найти все *.jpg 
:(
    Опции темы
bigturtle
Дата 13.7.2009, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Здравствуйте в программирование для BSD/ Unix я новичок.
Стал переносить свой код на эту ОС. У меня возникла проблему. Нужно что бы программа находила все файлы с расширением *.jpg, *.gif. В общем картинки. Вот что у меня пока есть
Код

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <dirent.h>

int main()
{
 DIR *pdir;
 unsigned int mask_len;

 struct dirent *pent;
char *filemask="1.jpg";
mask_len=strlen(filemask);




 pdir=opendir("."); //"." refers to the current dir
 if (!pdir){
 printf ("opendir() failure; terminating");
 exit(1);
 }
 errno=0; 
 while ((pent=readdir(pdir))){
      if (strncmp(pent->d_name, filemask,mask_len) == 0 ) {
        

  printf("%s\n", pent->d_name);}
 }  printf("%i\n",mask_len);
 if (errno){
 printf ("readdir() failure; terminating");
 exit(1);
 }
 closedir(pdir);
}
    

но здесь находятся только при полном совпадении, как можно найти по расширению? спасибо 
PM MAIL   Вверх
MastEdm
Дата 13.7.2009, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Master
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 3.12.2005
Где: Москва, МГИУ

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



Сравнивай конец имени с расширением. Например так:

Код

bool foo(char* str, char* suffix) { 
    size_t len1 = strlen(str);
    size_t len2 = strlen(suffix);
    return len1 >= len2 && memcmp(str + len1 - len2, suffix, len2) == 0;
}

....

if (foo(pent->d_name, ".jpg")) { 
...
}

PM MAIL   Вверх
bigturtle
Дата 13.7.2009, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Спасибо, помоглоsmile
PM MAIL   Вверх
xvr
Дата 14.7.2009, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



man 3 glob

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

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

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


 




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


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

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