crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Нужна срочно помощь, небольшая программка, программирование в линуксе
eu8cc
  опции профиля:
сообщение 31.5.2010, 11:59
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 31.5.2010
Пользователь №: 1769

Спасибо сказали: 0 раз(а)




Репутация:   0  


Помогите с программкой, не могу понять как написать ее:

написать программу, находящую в заданном каталоге и всех его подкаталагах все файлы заданного размера. Имя
каталога задается пользователем в качестве третьего аргумента командной строки. Диапазон (мин мах)
размеров файлов задается пользователем в качестве первого и второго аргумента командной строки. Программа
выводит результат поиска в файл(четвертый аргумент командной строки) в виде полный путь, имя файла, его
размер. На консоль выводиться сообщения числа просмотренных файлов.

На линуксе
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
eu8cc
  опции профиля:
сообщение 7.6.2010, 8:23
Сообщение #2


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 31.5.2010
Пользователь №: 1769

Спасибо сказали: 0 раз(а)




Репутация:   0  


а если так организовать?

void find(char const *dirname,int minsize,int maxsize,FILE *out);
{
  DIR *dr=opendir (const char *dirname);  
  if (dr==NULL)
         {
     fprintf(stderr,"Невозможно открыть директорию \"%s\"",dirname);
     fclose(out);
     errno = ENOENT;
     perror(", ");
     return -1; exit(1);
   }
  
   struct dirent *dt;
   while((dt=readdir(dr)))
   {
        if(dt->d_type=DT_DIR) find;
        if(dt->d_type=DT_REG)
        {
            if(((dt->st_size)>minsize) $$ ((dt->st_size)<maxsize)))
            {
              fprintf(out,"%-40s %-10jd %s\n",filename, (intmax_t) dt->st_size);
              i=i+1;
            }
        }
   }
return 0;  
}
int main (int argc,char* argv[])
{
  
    if (argc != 5)
    {    
        fprintf(stderr,"Не все параметры заданы\n");
        errno = EINVAL; //invalid arguments
        perror(argv[0]);
        printf("формат: нач_размер кон_размер папка имя_файла\n");
        return -1;    
    }    
    out = fopen (argv[4],"w+");    
    if ( out == NULL)
    {
        printf("NULL\n");
        fprintf(stderr,"Ошибка создания файла \"%s\"",argv[4]);
        perror(", ");
        return -1;
    }    
    DIR *dr = opendir(argv[3]);    
    if (dr == NULL)    
    {
        fprintf(stderr,"Невозможно открыть директорию \"%s\"",argv[3]);
        fclose(out);
        errno = ENOENT;// no such file or directory
        perror(", ");
        return -1;
    }
    minsize = atol(argv[1]);
    maxsize = atol(argv[2]);
    dirname = argv[3]
    find(*dirname,minsize, maxsize, FILE *out);
    printf ("Число просмотренных файлов равно %d\n", i);
    closedir(dr);
    fclose(out);
    return 0;
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- eu8cc   Нужна срочно помощь, небольшая программка   31.5.2010, 11:59
- - Iron Bug   а что непонятного в задании? собственно, была кака...   31.5.2010, 12:05
- - eu8cc   #include <dirent.h> #include <errno.h...   31.5.2010, 12:50
- - Iron Bug   а где у тебя сам обработчик обхода дерева, собстве...   31.5.2010, 12:57
- - eu8cc   tree это есть моя функция обработки, тока как ее н...   31.5.2010, 13:07
- - Iron Bug   дык, элементарно: проверяй флаги, запрашивай разме...   31.5.2010, 13:16
- - eu8cc   по ходу так? static int tree (const char *file...   31.5.2010, 13:47
- - Iron Bug   ну, что-то похожее.   31.5.2010, 14:57
- - eu8cc   Проверте, раюотает или нет #include <dirent.h...   31.5.2010, 15:41
- - alex977   Цитата(eu8cc @ 31.5.2010, 13:50) ... ftw(...   31.5.2010, 15:57
- - Litkevich Yuriy   eu8cc, читай об оформлении сообщений: Справка по к...   31.5.2010, 15:57
- - eu8cc   Цитата(alex977 @ 31.5.2010, 15:57) Из кни...   31.5.2010, 16:13
|- - BRE   Цитата(eu8cc @ 31.5.2010, 17:13) по ходу ...   31.5.2010, 16:35
- - alex977   Похоже. eu8cc, у меня линукса нет проверить. Тольк...   31.5.2010, 16:36
- - Litkevich Yuriy   Цитата(eu8cc @ 31.5.2010, 20:13) по ходу ...   31.5.2010, 17:52
- - eu8cc   Цитата(Litkevich Yuriy @ 31.5.2010, 17:52...   31.5.2010, 18:17
- - alex977   Из ранее упоминавшейся книги (буквально предыдущий...   31.5.2010, 20:58
- - Iron Bug   я думаю, что тут всё гораздо проще. в задаче ничег...   1.6.2010, 6:46
- - eu8cc   я тоже думаю что не нужны линки Iron Buq, наброса...   1.6.2010, 8:50
- - alex977   Iron Bug, я к тому, что это универсальная ф-ция. Ч...   1.6.2010, 9:26
- - eu8cc   а если так организовать? void find(char const...   7.6.2010, 8:23
- - Tonal   А чё тут думать? # find ~ -size 100M   2.7.2010, 8:40


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 1.12.2024, 12:27