Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/14: Рейтинг темы: голосов - 14, средняя оценка - 4.57
Studentka
3 / 3 / 0
Регистрация: 10.12.2009
Сообщений: 108
1

Поиск заданного файла в заданной папке (путь и имя файла задаются в командной строке)

06.03.2012, 01:23. Просмотров 2756. Ответов 3
Метки нет (Все метки)

Добрый вечер!
Как сделать поиск заданного файла в заданной папке(путь и имя файла задаются в командной строке)
это надо сделать с помощью ф-ции findfirst findnext

Вот правильный пример(но ввод не через ком. строку, а в программе)
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <dir.h>
 
int main(void)
{
struct ffblk ffblk;
int done;
printf("Листинг каталога d\n");
done = findfirst("D:\\*.txt",&ffblk,0);
while (!done) {
printf(" %s\n", ffblk.ff_name);
done = findnext(&ffblk);
}
return 0;
Вот пример как получить аргументы из командной строки
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
#include <stdlib.h>
 
void main(int argc, char *argv[])
{
int i;
 
printf("Значение argc равно %d \n\n",argc);
printf("В командной строке содержится %d параметров \n\n",argc);
 
for (i=0; i<=argc; i++)
printf(" argv[%d]: %s\n",i,argv[i]);
}
(argv[0]- это название файла запускаемого) т.е. в argv[1]- надо написать путь , а в argv[2]-имя файла
или же это поместить в одно
Как мне объединить эти 2 программы?(т.е. чтобы в параметр ф-ции findfirst вместо "D:\\*.txt" записывался введенный с командной строки путь к файлу )

Вот как
Предположим, что вы запускаете программу ARGS.EXE со следующей командной строкой:
C:> args first_arg
Значение argc равно 2
В командной строке содержится 2 параметрf
argv[0]: c:\turboc\testargs.exe
argv[1]: first_arg

Добавлено через 5 минут
я так понимаю надо завести переменные(для пути и названия файла) куда поместить считанные с ком. строки параметры(argv[1] argv[2]) их склеить(и добавить между путем и файлом \) . и это как-то поместить в функцию findfirst findnext
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.03.2012, 01:23
Ответы с готовыми решениями:

Копирование файла, если имя старого и нового файлов передается в командной строке
..помогите. даже не знаю с чего начать...лаба по ос..работаем в putty..а задание такое.. операции...

Написать программу, создающую файл - копию заданного файла. Имена файлов задаются в командной строке
1. Написать программу, создающую файл - копию заданного файла. Имена файлов задаются в командной...

Отделить путь и имя файла от аргументов в командной строке
Всем здравствуйте. Существует ли в VB.NET функция, выделяющая из командной строки с аргументами...

TASM. Копирование указанного файла (имена исходного и результирующего файла задаются в командной строке)
Нашел программу, но не смог добиться работы от нее. Описание: Пример программы (в формате DOS...

В командной строке задается имя входного файла и целое число Н. Распечатать последние Н строк указанного файла
В командной строке задается имя входного файла и целое число Н. Распечатать последние Н строк...

3
-=ЮрА=-
Заблокирован
Автор FAQ
06.03.2012, 01:37 2
Studentka, вы в чём пишите???
о findfirst нашёл сдесь http://www.delorie.com/djgpp/doc/libc/libc_326.html
Portability (совместимость)
ANSI/ISO C No
POSIX No
Могу предложить другой алгоритм поиска чрез FindFirst(Next)File (фунция API).
По поводу вашей проблеммы с аргументами main предлагю код ниже
Он возвращает переданній в командную строку параметр пути для поиска
C
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
 
int main(int argc, char *argv[])
{
    if(argc == 1)
        printf("To less of arguments\n");
    else
        printf("search in dir : %s\n",argv[1]);
    return 0;
}
И запомните передавать argv[0] вы не можете - это делает за вас система, всё что вы передаёте в main в качестве параметров идёт с индексами начиная с 1-цы, вот я передал парметр(всего один X:\SomeDir\SomeDirElse)
1
Миниатюры
Поиск заданного файла в заданной папке (путь и имя файла задаются в командной строке)  
Studentka
3 / 3 / 0
Регистрация: 10.12.2009
Сообщений: 108
06.03.2012, 01:54  [ТС] 3
спасибо, всё, уже разобралась.
0
-=ЮрА=-
Заблокирован
Автор FAQ
06.03.2012, 02:00 4
Studentka, я вам предлагаю вот такой простенький алгоритм поиска с использованием указанных мной выше
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
FindFirst(Next)File
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <windows.h>
#include <stdio.h>
 
int main(int argc, char *argv[])
{
    HANDLE hFind = INVALID_HANDLE_VALUE;
    WIN32_FIND_DATA pFIND = {0};
    if(argc == 1)
        printf("To less of arguments\n");
    else
    {
        printf("search in dir : %s\n",argv[1]);
        sprintf(pFIND.cFileName,"%s\\*.*",argv[1]);
        hFind = FindFirstFile(pFIND.cFileName,&pFIND);
        if(hFind != INVALID_HANDLE_VALUE)
        {
            printf("Founded pathes\n");
            do
            {
                printf("\t%32s - ",pFIND.cFileName);
                if(pFIND.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
                    printf("<DIR>\n");
                else
                    printf("<FILE>\n");
            }
            while(FindNextFile(hFind,&pFIND));
            FindClose(hFind);
        }
    }
    return 0;
}
В качестве параметра передавал C:\PROGRA~1 - т.е короткое имя (DOS-имя) для папки C:\Program Files
Учтите что когда вы передаёте C:\Program Files в привычном вам формате(с пробелом), то main воспринимает это как передачу сразу двух параметров C:\Program и Files
1
Миниатюры
Поиск заданного файла в заданной папке (путь и имя файла задаются в командной строке)  
06.03.2012, 02:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.03.2012, 02:00

Получить атрибуты файла, заданного в командной строке
Не создается com-файл. Пишет что то там с CS:IP не получилось) помогите найти ошибку .286...

Получить размер файла, заданного в командной строке
Помогите найти ошибку! дано задание получить размер файла заданного в командной строке функциями...

Ввести текст из файла, имя которого задано в командной строке, и вывести на экран
Ввести текст из файла, имя которого задано в командной строке и вывести на экран. Текст занимает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru