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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2010, 13:30   #1
eu8cc
Пользователь
 
Регистрация: 30.10.2008
Сообщений: 17
По умолчанию Программка для линукса

написать программу, находящую в заданном каталоге и всех его подкаталагах все файлы заданного размера. Имя каталога задается пользователем в качестве третьего аргумента командной строки. Диапазон (мин мах) размеров файлов задается пользователем в качестве первого и второго аргумента командной строки. Программа выводит результат поиска в файл(четвертый аргумент командной строки) в виде полный путь, имя файла, его размер. На консоль выводиться сообщения числа просмотренных файлов. на линуксе
eu8cc вне форума Ответить с цитированием
Старый 31.05.2010, 14:15   #2
eu8cc
Пользователь
 
Регистрация: 30.10.2008
Сообщений: 17
По умолчанию

остановился на этом, необходимо написать функцию tree что бы делала все обработки
Код:

#include <dirent.h>
#include <errno.h>
#include <stdio.h>
#include <ftw.h>
#include <sys/stat.h>
#include <time.h>
#include <stdint.h>

size_t s1,s2; //размер файлов в диапазоне s1 <= x <= s2
FILE *f = NULL;
time_t to_sec(char *date);



int main (int argc,char* argv[])
{
	
	if (argc != 5)
	{	
		fprintf(stderr,"Не все параметры заданы\n");
		errno = EINVAL; //invalid arguments
		perror(argv[0]);
		printf("формат: нач_размер кон_размер папка имя_файла\n");
		return -1;	
	}	
	f = fopen (argv[4],"w+");	
	if ( f == NULL)
	{
		printf("NULL\n");
		fprintf(stderr,"Ошибка создания файла \"%s\"",argv[4]);
		perror(", ");
		return -1;
	}	*/
	DIR *dr = opendir(argv[3]);	
	if (dr == NULL)	
	{
		fprintf(stderr,"Невозможно открыть директорию \"%s\"",argv[1]);
		fclose(f);
		errno = ENOENT;// no such file or directory
		perror(", ");
		return -1;
	}
	s1 = atol(argv[1]);
	s2 = atol(argv[2]);
	ftw(argv[3],tree,0);	//обход дерева
	closedir(dr);
	fclose(f);
	return 0;
}
eu8cc вне форума Ответить с цитированием
Старый 31.05.2010, 19:36   #3
eu8cc
Пользователь
 
Регистрация: 30.10.2008
Сообщений: 17
По умолчанию

Проверьте этот код, работает он или нет

Код:

#include <dirent.h>
#include <errno.h>
#include <stdio.h>
#include <ftw.h>
#include <sys/stat.h>
#include <time.h>
#include <stdint.h>

size_t s1,s2; //размер файлов в диапазоне s1 <= x <= s2
FILE *f = NULL;

static int tree (const char *filename, const struct stat *status, int flag)
	if (flag == FTW_F && status->st_size >= s1 && status->st_size <= s2)
	{
		fprintf(f,"%-40s %-10jd %s\n",filename, (intmax_t) status->st_size);//пишем в файл
	}
	return 0; //возвращаем 0, чтобы продолжить обход дерева,иначе обход прерывается
}

int main (int argc,char* argv[])
{
	
	if (argc != 5)
	{	
		fprintf(stderr,"Не все параметры заданы\n");
		errno = EINVAL; //invalid arguments
		perror(argv[0]);
		printf("формат: нач_размер кон_размер папка имя_файла\n");
		return -1;	
	}	
	f = fopen (argv[4],"w+");	
	if ( f == 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(f);
		errno = ENOENT;// no such file or directory
		perror(", ");
		return -1;
	}
	s1 = atol(argv[1]);
	s2 = atol(argv[2]);
	nftw(argv[3],tree,0, FTW_DEPTH || FTW_PHYS);	//обход дерева
	closedir(dr);
	fclose(f);
	return 0;
}
eu8cc вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программка для Windows в системе Builder!!!))) Sudeki Помощь студентам 0 13.12.2009 16:32
Программка для автоструктурирования кода Drakon4ek Софт 1 20.07.2008 21:18
Программка для репозитория Бизнес-процессов (бд) Paranoic Софт 2 26.05.2007 12:19