Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
Amurchik
0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 20
1

Выделить из полного имени файла название последнего каталога

09.11.2015, 21:45. Просмотров 1077. Ответов 25
Метки нет (Все метки)

Дана строка, содержащая полное имя файла. Выделить из этой строки название последнего каталога (без символов «\»). Если файл содержится в корневом каталоге, то вывести символ «\».
на с++
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2015, 21:45
Ответы с готовыми решениями:

Выделить из строки название последнего каталога
Привет всем, девушек с праздником! Вообщем к делу. Дана строка, содержащая...

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

Выделить из этой строки название первого каталога (без символов «\»)
Помогите написать программу на языке С++. Задание такое: Дана строка,...

Извлечь из полного имени файла директорию
Здравствуйте, из C:\Users\user\Documents\Virtual Machines\Windows 10...

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

25
nmcf
6515 / 5744 / 2617
Регистрация: 14.04.2014
Сообщений: 24,494
09.11.2015, 21:48 2
Ищи первый и второй слэши с конца.
0
Amurchik
0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 20
09.11.2015, 21:50  [ТС] 3
Мне бы хоть какие-то зацепки для начала, чтоб написать код, на эту тему код я еще не писал....
0
nmcf
6515 / 5744 / 2617
Регистрация: 14.04.2014
Сообщений: 24,494
09.11.2015, 23:06 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
 
int main()
{
    string path = "d:\\ffffs\\fggdse\\fggg.txt", dir;
    string::reverse_iterator it0 = std::find(path.rbegin(), path.rend(), '\\');
    string::reverse_iterator it1 = std::find(++it0, path.rend(), '\\');
    dir.resize(std::distance(it0, it1));
    std::reverse_copy(it0, it1, dir.begin());
    cout << dir;
    return 0;
}
Корневой каталог допили сам.
1
Amurchik
0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 20
09.11.2015, 23:21  [ТС] 5
Это круто, как по мне, Наш Препод только скажет, что что-то не так, Мы классы будем начинать только изучать, а сейчас у Нас процедурное программирование... А за идею реализации этого задания в "классах" СПАСИБО....)))
0
nmcf
6515 / 5744 / 2617
Регистрация: 14.04.2014
Сообщений: 24,494
09.11.2015, 23:27 6
Ну тогда просмотр строки в цикле с конца и ручная проверка символов. Затем копирование из промежутка.
0
Amurchik
0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 20
09.11.2015, 23:37  [ТС] 7
на словах мне понятно, а как это в коде выразить?
0
MicM
824 / 483 / 324
Регистрация: 29.12.2009
Сообщений: 1,106
Завершенные тесты: 1
10.11.2015, 09:39 8
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <boost/filesystem.hpp>
 
namespace fs = boost::filesystem;
 
int main()
{
    fs::path path ("/home/misha/file");
    std::cout << path.parent_path ().filename() << std::endl;
}
0
Amurchik
0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 20
10.11.2015, 10:43  [ТС] 9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void getFirstDir(char * fn, char * buf)                                         // Функция выделение из строки название каталога
{
    int c = 0;
    char *i, *s = strchr(fn, '\\');
    if (s == NULL) 
    {
        return;
    }
    char *e = strchr(s + 1, '\\');
    if (e == NULL)
    {
        buf[0] = '\\';
        buf[1] = 0;
        return;
    }
    for (i = s + 1; i < e; i++) 
    {
        buf[c++] = *i;
    }
    buf[c] = 0;
    return;
}
Это функция для названия первого каталога, как ее изменить для названия последнего каталога?
0
nmcf
6515 / 5744 / 2617
Регистрация: 14.04.2014
Сообщений: 24,494
10.11.2015, 13:16 10
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
void getFirstDir(char * fn, char * buf)                                         // Функция выделение из строки название каталога
{
    int c = 0;
    char *i, *s = strrchr(fn, '\\');
    if (s == NULL) 
    {
        return;
    }
    *s = '\0';
 
    char *e = strrchr(fn, '\\');
    *s = '\\';
 
    if (e == NULL)
    {
        buf[0] = '\\';
        buf[1] = 0;
        return;
    }
    for (i = s + 1; i < e; i++) 
    {
        buf[c++] = *i;
    }
    buf[c] = 0;
    return;
}
0
Amurchik
0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 20
10.11.2015, 14:22  [ТС] 11
не работает((

Добавлено через 23 минуты
не работает, консольное окно закрылось....
0
Kastaneda
Jesus loves me
Эксперт С++
4949 / 3026 / 346
Регистрация: 12.12.2009
Сообщений: 7,627
Записей в блоге: 2
Завершенные тесты: 1
10.11.2015, 14:31 12
Цитата Сообщение от Amurchik Посмотреть сообщение
не работает, консольное окно закрылось...
так не работает или консоль закрылась?
0
nmcf
6515 / 5744 / 2617
Регистрация: 14.04.2014
Сообщений: 24,494
10.11.2015, 14:45 13
Не в том порядке указатели. Мог бы и сам допилить.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void getFirstDir(char * fn, char * buf)                                         // Функция выделение из строки название каталога
{
    int c = 0;
    char *i, *s = strrchr(fn, '\\');
    if (s == NULL) 
    {
        return;
    }
    *s = '\0';
 
    char *e = strrchr(fn, '\\');
    *s = '\\';
 
    if (e == NULL)
    {
        buf[0] = '\\';
        buf[1] = 0;
        return;
    }
    strncpy(buf, e + 1, s - e - 1);
    buf[s - e] = 0;
    return;
}
0
Amurchik
0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 20
10.11.2015, 15:06  [ТС] 14
все-равно, пишет (прекращена работа программы) и закрывается ((((
0
nmcf
6515 / 5744 / 2617
Регистрация: 14.04.2014
Сообщений: 24,494
10.11.2015, 17:12 15
Показывай программу.
0
Amurchik
0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 20
10.11.2015, 17:19  [ТС] 16
У Вас есть скайп, или Team Viewer?
0
nmcf
6515 / 5744 / 2617
Регистрация: 14.04.2014
Сообщений: 24,494
10.11.2015, 17:47 17
Скайп-то при чём? Там чат неудобный. Скопируй сюда текст программы.
0
Amurchik
0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 20
10.11.2015, 17:51  [ТС] 18
У Меня многофайловый проэкт, занимает 4 листа....

Добавлено через 37 секунд
сюда копировать это будет много...
0
nmcf
6515 / 5744 / 2617
Регистрация: 14.04.2014
Сообщений: 24,494
10.11.2015, 18:13 19
Не надо всё. Ту часть, где видно эту функцию и что ты передаёшь при вызове.
0
Amurchik
0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 20
10.11.2015, 18:21  [ТС] 20
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
#include <iostream>
#include <iomanip>
#include <Windows.h>
#include <fstream>
#include <string.h>
#include <conio.h>
 
 
 
using namespace std;
 
 
 
void getFirstDir(char * fn, char * buf);                                 // Функция выделение из строки название каталога
 
void task1()
{
    SetConsoleOutputCP(1251);
    SetConsoleCP(1251);
 
    char *filename_one = "D:\\Android-Studio\\bin\\studio.exe";
    char *filename_two = "D:\\Ho-ho-ho.avi";
         char buf[256];
 
    getFirstDir(filename_one, buf);
    printf("One: %s\n", buf);
 
    getFirstDir(filename_two, buf);
    printf("Two: %s\n", buf);
 
 
    
 
}
 
 
void getFirstDir(char * fn, char * buf)                                         // Функция выделение из строки название каталога
{
    int c = 0;
    char *i, *s = strrchr(fn, '\\');
    if (s == NULL)
    {
        return;
    }
    *s = '\0';
 
    char *e = strrchr(fn, '\\');
    *s = '\\';
 
    if (e == NULL)
    {
        buf[0] = '\\';
        buf[1] = 0;
        return;
    }
    strncpy(buf, e + 1, s - e - 1);
    buf[s - e] = 0;
    return;
}
0
10.11.2015, 18:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2015, 18:21

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

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

Вывод на экран имени переменной(имени файла, и тд.)
Здрасти. Недалече столкнулся с проблемой: надо сравнить два файла по признаку...


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

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

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