Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.72
Андрей92
0 / 0 / 0
Регистрация: 10.02.2011
Сообщений: 15
#1

перации создания каталога, изменения временного каталога, удаление файла и директории (рекурсивно) - C++

15.02.2011, 22:29. Просмотров 2598. Ответов 16
Метки нет (Все метки)

пожалуйста напишите программу, которая позволяет выполнять операции создания каталога, изменения временного каталога, удаление файла и директории (рекурсивно).очень прошу!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.02.2011, 22:29
Я подобрал для вас темы с готовыми решениями и ответами на вопрос перации создания каталога, изменения временного каталога, удаление файла и директории (рекурсивно) (C++):

Операции создания каталога, изменения временного каталога, удаление файла и директории
Написать программу, которая позволяет выполнять операции создания каталога,...

Написать программу, которая обеспечивает:начальное формирование каталога файлов;вывод каталога файлов;удаление файлов...
Уважаемые хакеры!Прошу вашей помощи!Я в СИ не особо шарю.((( А на днях уже...

Дата создания каталога/папки
Как программно получить время создания папки/каталога и можно ли время создания...

Мониторинг каталога на предмет изменения содержимого
Нужно написать функция (или подпрограмму) которая мониторит каталог. Если какой...

Удаление непустого каталога
Написал функцию удаления непустого каталога deltree, компилируется нормально,...

Дописать удаление товаров из каталога
Разработать программу ведения каталога товаров на основе структур, имеющих...

16
-=ЮрА=-
Заблокирован
Автор FAQ
16.02.2011, 17:49 #2
Есть С-шные функции создания и удаления каталога mkdir и rmdir насколько помню их заголовки даны в direct.h, нагугли в msdn-е об их синтасисе, вроди по памяти rmdir и файлы удаляет

Добавлено через 2 часа 19 минут
Вот что у меня получилось
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#include <direct.h>
#include <windows.h>
#include <shlobj.h> //Подключаем SHLDialog
#include <stdio.h>
 
char sPath[MAX_PATH];
char sName[MAX_PATH];
 
LPTSTR SelectPath(LPCTSTR sTITLE, UINT BIF_PARAM);
/*
BIF_DONTGOBELOWDOMAIN   
BIF_BROWSEINCLUDEFILES
*/
 
void main()
{
BEGIN:
    printf("\t*******PROGRAM MENU*******\r\n");
    printf("1 - MAKE   DIRECTORY\r\n");
    printf("2 - REMOVE DIRECTORY\r\n");
    printf("3 - REMOVE FILE\r\n");
    int iKey;scanf("%d",&iKey);
    switch(iKey)
    {
    case 1:
        sprintf(sPath,"%s\\",
            SelectPath
            (
                "Choose directory", 
                BIF_DONTGOBELOWDOMAIN
            )
                );
        if(sPath[0] =! '\0')
        {
            printf("Creation subdirectory in path :\r\n%s\r\n",sPath);
            printf("Enter name of subdirectory\r\n");
            scanf("%s",sName);
            if(mkdir(strcat(sPath,sName)))
                printf("Creation \r\n%s\r\n SUCCESFULLY COMPLETED\r\n",sPath);
        }
        break;
    case 2:
        sprintf(sPath,"%s\\",
            SelectPath
            (
                "Choose directory", 
                BIF_DONTGOBELOWDOMAIN
            )
                );
        if(sPath[0] =! '\0')
        {
            if(rmdir(sPath))
                printf("%s\r\n SUCCESFULLY DELETED\r\n",sPath);
        }
        break;
    case 3:
        sprintf(sPath,"%s\\",
            SelectPath
            (
                "Choose file", 
                BIF_DONTGOBELOWDOMAIN|BIF_BROWSEINCLUDEFILES
            )
                );
        if(sPath[0] =! '\0')
        {
            if(rmdir(sPath))
                printf("%s\r\n SUCCESFULLY DELETED\r\n",sPath);
        }
        break;
    default :
        return;
        break;
    }
    goto BEGIN;
}
 
LPTSTR SelectPath(LPCTSTR sTITLE, UINT BIF_PARAM)
{
    char sPath[MAX_PATH];sPath[0] = '\0';
    LPCITEMIDLIST lpITEMIDLIST;
    BROWSEINFO pINFO = 
    {
        NULL, 
        NULL, 
        sPath,
        sTITLE,
        BIF_PARAM,
        NULL,
        NULL,
        0
    };
    if((lpITEMIDLIST = SHBrowseForFolder(&pINFO)))
    {
        if(SHGetPathFromIDList(lpITEMIDLIST, sPath))
            GetShortPathName((LPCTSTR)sPath, sPath,strlen(sPath));
    }
    return &sPath[0];
}
1
Андрей92
0 / 0 / 0
Регистрация: 10.02.2011
Сообщений: 15
16.02.2011, 19:17  [ТС] #3
спасиб,ща попробуем)

Добавлено через 1 час 18 минут
а как подлючить #include <shlobj.h> ??а то выдает ошибку
0
Kastaneda
Jesus loves me
Эксперт С++
4760 / 2963 / 341
Регистрация: 12.12.2009
Сообщений: 7,524
Записей в блоге: 2
Завершенные тесты: 1
16.02.2011, 19:51 #4

Не по теме:

Есть С-шные функции создания и удаления каталога mkdir и rmdir насколько помню их заголовки даны в direct.h
direct.h не входит в стаднартную реализацию языка Си, например в GCC (у меня 4.5.2) такого хедера нет.



Добавлено через 2 минуты
Андрей92, спешл_фор_ю
На сколько я понял, это чисто Borland'овская приблуда.
0
Андрей92
0 / 0 / 0
Регистрация: 10.02.2011
Сообщений: 15
16.02.2011, 20:43  [ТС] #5
чё то не получилось,а без <shlobj.h> прога будет работать??и для чего shlobj.h вообще нужен?
0
-=ЮрА=-
Заблокирован
Автор FAQ
17.02.2011, 16:08 #6
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
32
33
34
35
36
37
#include <direct.h>
#include <string.h>
#include <stdio.h>
 
char sPath[256];
 
void main()
{
BEGIN:
    printf("\t*******PROGRAM MENU*******\r\n");
    printf("1 - MAKE   DIRECTORY\r\n");
    printf("2 - REMOVE DIRECTORY\r\n");
    printf("3 - REMOVE FILE\r\n");
    int iKey;scanf("%d",&iKey);
    switch(iKey)
    {
    case 1:
        strcpy(sPath,"C:\\Temp");
        if(mkdir(sPath) == 0)
            printf("Creation \r\n%s\r\n SUCCESFULLY COMPLETED\r\n",sPath);
        break;
    case 2:
        strcpy(sPath,"C:\\Temp");
        if(rmdir(sPath) == 0)
            printf("%s\r\n SUCCESFULLY DELETED\r\n",sPath);
        break;
    case 3:
        strcpy(sPath,"C:\\Temp\\Test.txt");
        if(rmdir(sPath) == 0)
            printf("%s\r\n SUCCESFULLY DELETED\r\n",sPath);
        break;
    default :
        return;
        break;
    }
    goto BEGIN;
}
Добавлено через 3 минуты
Kastaneda, direct.h входит в состав пакета VisualStudio 6.0 и shlobj.h тоже...
2
Андрей92
0 / 0 / 0
Регистрация: 10.02.2011
Сообщений: 15
20.02.2011, 11:28  [ТС] #7
а при создания каталога,как можно узнать что он вообще создался??
0
-=ЮрА=-
Заблокирован
Автор FAQ
20.02.2011, 16:00 #8
1-й самый простой, открыть диск С в эксплорере и поглядеть, ну это очень тривиально)))
2-й вбей
C++
1
system("explorer C:\\Temp");
для подключения заголовка system необходим stdlib.h
3 - можно использовать функцию ShellExecute но это уже слишком в условиях поставленной задачи...
0
Андрей92
0 / 0 / 0
Регистрация: 10.02.2011
Сообщений: 15
20.02.2011, 20:34  [ТС] #9
а,спасиб
0
Андрей92
0 / 0 / 0
Регистрация: 10.02.2011
Сообщений: 15
21.02.2011, 16:26  [ТС] #10
не подскажете чё тут ошибку выдает?
0
Миниатюры
перации создания каталога, изменения временного каталога, удаление файла и директории (рекурсивно)  
ForEveR
В астрале
Эксперт С++
7994 / 4753 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
21.02.2011, 20:34 #11
Андрей92, Это ворнинг. Уберите break;
0
Андрей92
0 / 0 / 0
Регистрация: 10.02.2011
Сообщений: 15
21.02.2011, 21:25  [ТС] #12
если убераешь break то прога не выполняет операции
0
ForEveR
В астрале
Эксперт С++
7994 / 4753 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
22.02.2011, 01:51 #13
Андрей92, С какого это? Все она выполняет. Там return в default идет - выход из функции. break там точно не нужен
0
Андрей92
0 / 0 / 0
Регистрация: 10.02.2011
Сообщений: 15
22.02.2011, 07:21  [ТС] #14
откомпелировал,нажимаю ctrl+f9 выбираю что мне нужно сделать,например создать каталог,нажимаю 1,а оно не создает,пару дней назад всё было норм,создавало,удаляло каталоги,а щас чёто не
0
Миниатюры
перации создания каталога, изменения временного каталога, удаление файла и директории (рекурсивно)  
-=ЮрА=-
Заблокирован
Автор FAQ
22.02.2011, 11:24 #15
Я билдер не люблю, но решил всё таки разобраться почему у тебя не компилится проект. BC.EXE сообщил при линковании об 1-м предупреждении, закоментируй код как я показал на картинке, после этого программа работает, сам тестил!!!
0
Изображения
 
-=ЮрА=-
Заблокирован
Автор FAQ
22.02.2011, 11:28 #16
А вообще можно просто убрать ветвь default и никаких проблем
0
Андрей92
0 / 0 / 0
Регистрация: 10.02.2011
Сообщений: 15
22.02.2011, 17:01  [ТС] #17
я так и сделал,чёто всеравно не так ,раньше при нажатии например создать каталог оно пишет что создало SUCCESFULLY COMPLETED ,а щас вообще не пишет что создало

Добавлено через 7 минут
может проблема в заполнении памяти??
0
22.02.2011, 17:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.02.2011, 17:01
Привет! Вот еще темы с решениями:

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

Как определить с существование файла и каталога?
Всем здравствуйте. Перед тем как начать работу с файлом я определяюсь с его...

Выделить из полного имени файла название последнего каталога
Дана строка, содержащая полное имя файла. Выделить из этой строки название...

Просмотр каталога
Столкнулся с такой проблемой: необходимо проверить все папки данного каталога...


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

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

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