Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Для новичков > Помогите с задачкой, правильно ли решил |
Автор: eu8cc 31.5.2010, 18:47 | ||
Помогите с программкой, не могу понять как написать ее: написать программу, находящую в заданном каталоге и всех его подкаталагах все файлы заданного размера. Имя каталога задается пользователем в качестве третьего аргумента командной строки. Диапазон (мин мах) размеров файлов задается пользователем в качестве первого и второго аргумента командной строки. Программа выводит результат поиска в файл(четвертый аргумент командной строки) в виде полный путь, имя файла, его размер. На консоль выводиться сообщения числа просмотренных файлов. На линуксе
если есть возможность то проверьте работает ли код |
Автор: Фантом 31.5.2010, 19:05 |
Ну, для начала, она просто не компилируется. ![]() Ну и дурацкий вопрос - зачем стрелять из пушки по воробьям, если есть find? Или это такое учебное задание? |
Автор: eu8cc 31.5.2010, 19:11 | ||
подправил
предложите еще как можно ее решить, вроде подправил, если есть возможность то проверте |
Автор: Фантом 31.5.2010, 19:42 | ||||
Незаметно. Первая из упомянутых ошибок никуда не делась Вот такой командой в консоли: find "стартовый каталог" -size +<минимальный размер> -size -<максимальный размер>. Ну, например, что-то такое:
Будет искать все файлы в /home/user и подкаталогах, с размером от 800 кб до 3 Мб. Если требуется строго то поведение, которое описано выше, можно сляпать такой скрипт:
Он будет делать в точности то, что требовалось, и не надо городить огород на языке, который для таких задач не предназначен. |
Автор: eu8cc 31.5.2010, 19:53 | ||
а сейчас видно? ))) мне не нужен поиск с командной строки, а нужна программа которая ищет согласно заданным аргументам!!! если можете то помогите пожалуйста
|
Автор: eu8cc 31.5.2010, 20:24 |
именно так, вот и приходится мучиться с этим кодом. |
Автор: bilbobagginz 1.6.2010, 04:09 |
судя по реакции на вопросы - явно не автору топика... |
Автор: ller 1.6.2010, 10:58 |
если дали такое задание на учебе, то надо делать. И там кстати все задания, которые кто то уже решил, разбить на подстроки, заменить в массиве ну итд итп |
Автор: eu8cc 1.6.2010, 18:22 |
У меня такое впечатление что никто здесь не разбирается в линуксе, я на большую половину решил задание, а никто не может дальше его продолжить. Или хотя бы проверить на правильность. Синтаксические ошибки я и сам вижу(где не хватает фигурной скобки, или не ту цифру поставил). Извиняюсь, но уже надоели эти разговори в пустую, сколько можно ходить около. Хочется конкретики услышать, например: вставь этот оператор, или здесь нужно что бы было так. Не хочу никого обижать, но так получается. |
Автор: djamshud 1.6.2010, 20:45 | ||
Код за вас писать не буду, но расскажу, как эта костыльная задача решается. Все очень просто. 1. Делается рекурсивная функция
2. В ней открываете директорию (man 3 opendir) и читаете друг за дружкой все файлы в ней (man 3 readdir). 3. Если это обычный файл, смотрите его размер (man 3 stat), сравниваете с minsize и maxsize; условие проходит - пишите имя файла в out (man 3 fprintf). Если это директория, отправляетесь в рекурсию (man 7 рекурсия). 4. В main читаете аргументы командной строки и передаете их в эту функцию. 5... 6. PROFIT //int minsize,int maxsize,FILE *out - можно сделать глобальными. Добавлено через 53 секунды >У меня такое впечатление что никто здесь не разбирается в линуксе Я вам доказал, что разбираюсь в линупсе! Теперь я смогу уснуть спокойно. Фхуууу! |
Автор: Фантом 1.6.2010, 21:08 | ||
Хм... а Вы не задумывались над тем, что пытаться просить кого-то Вам помочь, не удосужившись хотя бы проверить свой код на синтаксическую корректность, несколько неприлично? |
Автор: eu8cc 1.6.2010, 22:23 |
Большое спасибо djamshud за разъяснения. |
Автор: nickless 2.6.2010, 22:52 |
Модератор: Перенесено из http://forum.vingrad.ru/forum/Linux-Unix-common-questions.html |
Автор: eu8cc 7.6.2010, 08:13 | ||||||
Просмотрите, я правильно записал?
Добавлено @ 08:22 немного подправил
|