Название: Помогите с задачкой
Отправлено: eu8cc от Июня 07, 2010, 14:39
Задачка:написать программу, находящую в заданном каталоге и всех его подкаталагах все файлы заданного размера. Имя каталога задается пользователем в качестве третьего аргумента командной строки. Диапазон (мин мах) размеров файлов задается пользователем в качестве первого и второго аргумента командной строки. Программа выводит результат поиска в файл(четвертый аргумент командной строки) в виде полный путь, имя файла, его размер. На консоль выводиться сообщения числа просмотренных файлов. Проверьте пожалуйста код? #include <dirent.h> #include <errno.h> #include <stdio.h> #include <ftw.h> #include <sys/stat.h> #include <time.h> #include <stdint.h>
int minsize; int maxsize; FILE *out = NULL; int i=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; }
Название: Re: Помогите с задачкой
Отправлено: niXman от Июня 07, 2010, 15:02
еще не на всех форумах запостил? могу подсказать еще несколько. http://www.cyberforum.ru/cpp-linux/thread142108.html
Название: Re: Помогите с задачкой
Отправлено: eu8cc от Июня 07, 2010, 15:19
Я с удовольствием уже отдохнул, очень срочно нужна помощь, не везде но помогают
|