Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.82/55: Рейтинг темы: голосов - 55, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 20.09.2018
Сообщений: 70

Строка: Вывести только название последнего каталога, имя файла и расширение из полного пути к файлу...

16.10.2018, 14:07. Показов 11812. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задана строка, содержащая полный путь к файлу, начиная с диска. Вывести только название последнего каталога, имя файла и расширение.
Вроде просто, надо сделать перебор сначала, дойти до второго \ и вывести всё, что было до него, или удалить всё, что после него вместе с ним. Только вот как это изобразить не знаю.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.10.2018, 14:07
Ответы с готовыми решениями:

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

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

Выделить из полного пути имя последнего каталога
Дана строка, содержащая полное имя файла. Выделить из этой стро- ки название последнего каталога (без символов «\»). Если файл содер- ...

34
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
18.10.2018, 14:25
Лучший ответ Сообщение было отмечено else aaa как решение

Решение

Студворк — интернет-сервис помощи студентам
Цитата Сообщение от else aaa Посмотреть сообщение
Он ругается на scanf , при scanf_s выводит ошибку.
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
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
 
int main()
{
    char str[256] = {};
    char* pos1;
    char* pos2;
  
    char sym = '/';
  
    
    scanf_s("%s", str, (unsigned)_countof(str));
  
    pos1 = strrchr(str, sym);
  
    if(!pos1)
    {
        printf("%s\n", str); 
        free(str); 
        return 0;
    }
  
    pos1[0]=0;
    pos2 = strrchr(str, sym);
    pos1[0]=sym;
 
    if(!pos2)
        pos2 = str;
    else 
        ++pos2;
  
    printf("%s\n", pos2);
}
1
0 / 0 / 0
Регистрация: 20.09.2018
Сообщений: 70
18.10.2018, 14:33  [ТС]
hoggy, огромное спасибо. Был бы очень благодарен, если бы вы объяснили хоть примерно, как это работает.
0
 Аватар для COKPOWEHEU
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,095
18.10.2018, 16:15
Лучший ответ Сообщение было отмечено else aaa как решение

Решение

Цитата Сообщение от hoggy Посмотреть сообщение
scanf_s - более безопасная версия функции scanf
её завезли специально, что бы всякие балбесы вроде COKPOWEHEU не отстрелили себе ноги.
Конкретнее, с примерами.
Уже то, что никому кроме Microsoft эти "безопасные" функции даром не нужны, говорит об их полезности.
Ну и да, при их использовании тут на форуме каждый раз приходится копать весь файл, выкидывая эту гадость заодно с <conio.h> и _getch() чтобы хотя бы проверить работоспособность.
Цитата Сообщение от hoggy Посмотреть сообщение
теперь смотрите, что именно в неё запихали:
не инициализированный указатель str.
А на что по-вашему указывает форматная строка "%ms"?
Кликните здесь для просмотра всего текста
Для ТСа поясню, что модификатор m перед типом данных указывает scanf'у самостоятельно выделить память. Что, собственно, отражено в комментарии к коду.

hoggy
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ gcc main.c
main.c: In function ‘main’:
main.c:14:5: warning: implicit declaration of function ‘scanf_s’; did you mean ‘scanf’? [-Wimplicit-function-declaration]
     scanf_s("%s", str, (unsigned)_countof(str));
     ^~~~~~~
     scanf
main.c:14:34: warning: implicit declaration of function ‘_countof’ [-Wimplicit-function-declaration]
     scanf_s("%s", str, (unsigned)_countof(str));
                                  ^~~~~~~~
main.c:21:9: warning: attempt to free a non-heap object ‘str’ [-Wfree-nonheap-object]
         free(str);
         ^~~~~~~~~
/tmp/cc3L7NVX.o: In function `main':
main.c:(.text+0x36): undefined reference to `_countof'
main.c:(.text+0x53): undefined reference to `scanf_s'
collect2: error: ld returned 1 exit status
А вот теперь заставим компилироваться, после чего проверим:
Code
1
2
3
4
5
6
7
8
9
10
$ gcc main.c
main.c: In function ‘main’:
main.c:20:5: warning: attempt to free a non-heap object ‘str’ [-Wfree-nonheap-object]
     free(str); //это было верно в моем коде, но в вашем - освобождение статической памяти
     ^~~~~~~~~
$ ./a.out 
a.b
 
munmap_chunk(): invalid pointer
Аварийный останов
Как и следовало ожидать. Человек, считая себя самым умным, при "исправлении" рабочего кода только накосячил.
Не хотите автовыделения памяти, можно сделать так:
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
#define _CRT_SECURE_NO_WARNINGS //исправляем баг msvs с scanf и прочим
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
 
int main(){
  char str[2048]; //по умолчанию выделяется 8М стека. Чего жадничать?
  char* pos1;
  char* pos2;
  
  char sym = '/';
  
  scanf("%2047s", str); //ограничение на длину строки задаюся так
  //fgets(str, 2047, stdin); //а можно и так
  
  pos1 = strrchr(str, sym);
  
  if(!pos1){
    printf("%s\n", str); 
    //free(str); //это было верно в моем коде, но в вашем - освобождение статической памяти
    return 0;
  }
  
  pos1[0]=0;
  pos2 = strrchr(str, sym);
  pos1[0]=sym;
  
  if(!pos2)pos2 = str;
    else ++pos2;
  
  printf("%s\n", pos2);
}
Добавлено через 10 минут
Цитата Сообщение от else aaa Посмотреть сообщение
hoggy, огромное спасибо. Был бы очень благодарен, если бы вы объяснили хоть примерно, как это работает.
scanf("%2047s", str); Ввод строки. Число перед модификатором ограничивает количество вводимых символов, чтобы при переполнении данные не записывались куда не надо. К сожалению, не существует стандартного* способа задать это количество через переменную. Впрочем, есть обходной путь: fgets(str, 2047, stdin);. В отличие от обычного форматного ввода, концом строки служит только перевод строки ('\n') или конец строки ('\0'), но не пробелы или табуляции. Кроме того, последний символ (тот же '\n') также попадает в строку. В ряде случаев это удобно, в ряде - нет.
pos1 = strrchr(str, sym); Функция strchr() ищет первое вхождение символа sym в строку str. Функция strrchr - последнее. И возвращает указатель на этот символ, то есть куда-то в середину строки. Если символа в строке нет - возвращает NULL. Именно это мы дальше и проверяем: если в строке нет ни одного слеша, печатаем всю строку.
pos1[0]=0;pos2 = strrchr(str, sym);pos1[0]=sym; Вот тут немного хитрый момент. Функция strrchr ищет последний символ, но его му уже нашли, значит надо "обрезать" строку, чтобы функция до него не дошла. Поэтому мы говорим что "на этом месте строка кончается", то есть записываем вместо слеша символ конца строки '\0', после чего ищем слеш в оставшейся строке. Далее возвращаем стертый символ на место чтобы не портить строку.
if(!pos2)pos2 = str;Аналогично предыдущему случаю: если в строке был только один слеш (сохраненный в pos1), то просто выводим строку целиком, если же нет, то выводим начиная с найденной позиции. Правда, прямо в найденной позиции находится этот самый слеш, так что сдвигаемся на один символ вправо.
1
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
18.10.2018, 16:53
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Уже то, что никому кроме Microsoft эти "безопасные" функции даром не нужны, говорит об их полезности.
это ты майкрософт втирай.
и комитету заодно
(да да, безопасные версии функций завезли в стандарт)

мне твоё мнение по этому вопросу не интересно.

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
А на что по-вашему указывает форматная строка "%ms"?
на что-то такое:
source_file.cpp:8:20: warning: ISO C++11 does not support the 'm' scanf flag [-Wformat=]
scanf("%ms", &str);
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
free(str); //это было верно в моем коде, но в вашем - освобождение статической памяти
ты гонишь что ли?
в моей версии нет этого маразма.

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Как и следовало ожидать. Человек, считая себя самым умным, при "исправлении" рабочего кода только накосячил.
то есть ты сам накосячил, а на меня свалил.
наверное очень умным себя считаешь?

моя версия работает.
там есть ссылочка на онлайн компилятор.
можно жмакнуть и проверить.


Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
#define _CRT_SECURE_NO_WARNINGS //исправляем баг msvs с scanf и прочим
за такое ссаными тряпками по губам нужно бить))
0
 Аватар для COKPOWEHEU
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,095
18.10.2018, 19:05
Цитата Сообщение от hoggy Посмотреть сообщение
это ты майкрософт втирай.
и комитету заодно
(да да, безопасные версии функций завезли в стандарт)
Это ты всем остальным втирай. А на счет стандарта тут один уже пытался мне втирать что "scanf_s в стандарт завезли", но, как и следовало ожидать, сел в лужу, как и ты сейчас. Впрочем, если хочешь, можешь попозориться и привести цитату из стандарта что эти функции являются обязательными, а не опциональными.
Цитата Сообщение от hoggy Посмотреть сообщение
на что-то такое:
source_file.cpp:8:20: warning: ISO C++11 does not support the 'm' scanf flag [-Wformat=]
scanf("%ms", &str);
Открываем man и читаем:
Code
1
2
3
4
5
6
7
8
9
10
11
12
Originally, the GNU C library supported dynamic allocation for string inputs (as a non‐
       standard extension) via the a character.  (This feature is present at least as far back
       as glibc 2.0.)  Thus, one could write the following to have scanf() allocate  a  buffer
       for an input string, with a pointer to that buffer being returned in *buf:
 
           char *buf;
           scanf("%as", &buf);
 
       The  use of the letter a for this purpose was problematic, since a is also specified by
       the ISO C standard as a synonym for f  (floating-point  input).   POSIX.1-2008  instead
       specifies  the  m  modifier  for  assignment  allocation (as documented in DESCRIPTION,
       above).
Да, это GNU-специфичное расширение.
Цитата Сообщение от hoggy Посмотреть сообщение
ты гонишь что ли?
в моей версии нет этого маразма.
Уже свой код прочитать не можешь? Хорошо, я могу носом ткнуть. 21 пост, 21 строка.
Цитата Сообщение от hoggy Посмотреть сообщение
то есть ты сам накосячил, а на меня свалил.
наверное очень умным себя считаешь?
Пруфы моих косяков будут или так и продолжишь хвастаться незнанием языка?
Цитата Сообщение от hoggy Посмотреть сообщение
за такое ссаными тряпками по губам нужно бить))
Угу, тех, кто этого не делает.
Хотя ты не поймешь, что такое следование стандартам, кроссплатформенность и переносимость. Поскольку "есть только Майкрософт и нет жизни вне его, аминь!"

Добавлено через 46 минут
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
А на счет стандарта тут один уже пытался мне втирать что "scanf_s в стандарт завезли", но, как и следовало ожидать, сел в лужу, как и ты сейчас.
Нашел ту тему. Оказывается, тогда тоже был ты. Один раз не смог доказать превосходство ms перед другими, теперь снова пытаешься? Что изменилось-то?
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
19.10.2018, 12:27
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Это ты всем остальным втирай. А на счет стандарта тут один уже пытался мне втирать что "scanf_s в стандарт завезли", но, как и следовало ожидать, сел в лужу, как и ты сейчас.
*потыкал мордой в эту самую лужу*
https://en.cppreference.com/w/c/io/fscanf

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Да, это GNU-специфичное расширение.
у чувака вообще каэль (вижуал студия) если чо.

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Уже свой код прочитать не можешь? Хорошо, я могу носом ткнуть. 21 пост, 21 строка.
действительно.
профакапил говнястый рудимент от господина COKPOWEHEU

когда ты на эту фряху в первый раз указал: вот ни разу не очевидно из какой это строки.
я думал - которая в конце функции.
то что там ещё где то есть фряха - мне даже в голову не пришло
(нормальные люди делают одну секцию зачистки данных)

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Пруфы моих косяков будут или так и продолжишь хвастаться незнанием языка?
как то так:
Цитата Сообщение от else aaa Посмотреть сообщение
Прога от господина COKPOWEHEU упорно не хочет работать.

а теперь, если у тебя есть мозги, подумай сам:
и почему то это гнутое расширение не взлетело на каэле вижул студии?
0
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
19.10.2018, 13:01
COKPOWEHEU, стандарт C11 вводит функции с суффиксом _s, но не требует их обязательной поддержки.
Так что начиная с C11 функция scanf_s является стандартной, просто реализация может её не поддерживать.

Добавлено через 4 минуты
Ать: Что значит ошибка error C2660: strcpy_s: функция не принимает 2 аргументов?
Два: При вызове конструктора ошибка: L "Buffer is too small" & & 0
0
 Аватар для COKPOWEHEU
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,095
19.10.2018, 14:02
Цитата Сообщение от hoggy Посмотреть сообщение
*потыкал себя в эту самую лужу*
поправил, не благодари. Или снова не осилил прочитать собственную ссылку?
Цитата Сообщение от hoggy Посмотреть сообщение
у чувака вообще каэль (вижуал студия) если чо.
Тогда ему надо было скопировать сюда ругань компилятора, на основе этого бы и разбирались. Мне-то откуда знать что там в msvs поддерживается?
Цитата Сообщение от hoggy Посмотреть сообщение
действительно.
не осилил разобраться с кодом COKPOWEHEU
Снова поправил.
В отличие от твоего, мой код работает. И выделение-освобождение памяти расставлены там где надо. А уж если ты собрался "исправлять", то разберись как он работал и в каких местах это может всплыть.
Цитата Сообщение от hoggy Посмотреть сообщение
я думал - которая в конце функции.
то что там ещё где то есть фряха - мне даже в голову не пришло
(нормальные люди делают одну секцию зачистки данных)
Да-да, оправдывайся что не знаешь как работает стандартный scanf и не осилил документацию. В данном случае я решил не усложнять код вынесением всех очисток в отдельное место или шаманить с goto.
Цитата Сообщение от hoggy Посмотреть сообщение
как то так:
Прога от господина COKPOWEHEU упорно не хочет работать.
Как показывает опыт, это может означать все что угодно. От реальных ошибок в коде до неумения пользоваться компилятором. Я что, должен из мутных волн атсрала вытаскивать лог ошибок чтобы разобраться что именно не работает?
Цитата Сообщение от hoggy Посмотреть сообщение
а теперь, если у тебя есть мозги, подумай сам:
и почему то это гнутое расширение не взлетело на каэле вижул студии?
Повторюсь: мне-то откуда знать? Я не отвечаю за msvs и поддержку ей различных стандартов.
Кстати, а где ТС писал какой компилятор использует? Не в 15 ли посте, уже после того, как я предложил решение?
Цитата Сообщение от hoggy Посмотреть сообщение
что до языка: я знаю его получше тебя.
не играй со мной на этом поле - проиграешь.
Заметно. Что в прошлый раз кинулся махать своим кунг-фу с закономерным результатом "Действительно. Чот я налажал". Ну, в прошлый раз ты хотя бы смог признать свою ошибку.
Цитата Сообщение от hoggy Посмотреть сообщение
с безопасными функциями ты уже обосрался.
Пока что вонь только от тебя. Или ты все-таки нашел дыры в моем коде?
Цитата Сообщение от Croessmah Посмотреть сообщение
COKPOWEHEU, стандарт C11 вводит функции с суффиксом _s, но не требует их обязательной поддержки.
Так что начиная с C11 функция scanf_s является стандартной, просто реализация может её не поддерживать.
Именно это я и пытаюсь доказать hoggy, но он упорно игнорирует даже собственные ссылки.
Собственно, я же уже кидал ссылку на прошлое обсуждение. Но могу еще раз кинуть.
Если вкратце: hoggy как и сейчас кинулся махать флагом "Microsoft бог, все что реализовано в msvs - стандарт", но предсказуемо сел в лужу, где, судя по поведению, и пребывает до настоящего момента.
0
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
19.10.2018, 14:41
COKPOWEHEU, так оно теперь стандарт.
Раньше - если нет функций _s, то компилятор не поддерживает это нестандартное расширение.
Сейчас - если нет функций _s, то компилятор не поддерживает эту стандартную возможность.
Необязательность чего либо в C - обычное явление.
0
 Аватар для COKPOWEHEU
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,095
19.10.2018, 15:28
Существует некоторый базовый набор команд, которые стандарт обязывает поддерживать, и набор рекомендуемых расширений. Также есть кучка сторонних стандартов, тот же gnu, определяющий свои конструкции.
Так вот, пока функция не вошла в первую категорию, на нее полагаться нельзя и она ничем не отличается от любой другой нестандартной.
Цитата Сообщение от Croessmah Посмотреть сообщение
Необязательность чего либо в C - обычное явление.
Обычное скорее "неопределенное поведение" у обязательных конструкций. А от необязательного, наоборот, стараются избавиться. С ходу не вспоминается ничего кроме неявного int и неявного приведения типов.
Цитата Сообщение от Croessmah Посмотреть сообщение
Сейчас - если нет функций _s, то компилятор не поддерживает эту стандартную возможность.
Кстати, из чистого любопытства. Как бы вы объяснили, что функции _s до сих пор поддерживаются не всеми компиляторами? Если точнее, то, насколько мне известно, они поддерживаются единственным компилятором.
И зачем их в таком случае вообще добавили в стандарт?
Лично мое мнение
1. Кроме MS это никому не нужно, все более-менее опытные программисты знают о граблях в этих функциях и умеют обходить, а синтаксис _s функций слишком громоздкий и неудобный. Все равно лучше бы в scanf добавили модификатор задания длины строки по аналогии с модификатором "%n" и "%123s". В чем смысл strcpy_s тоже непонятно если есть strncpy
2. Какие-то политические причины. Возможно, следование моде "изображать безопасность".
0
Заблокирован
19.10.2018, 15:45
Цитата Сообщение от else aaa Посмотреть сообщение
спасибо, но можно как-то попроще
вот тебе самое простое:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <cstring>
 
int main() {
    const char* path = "/dir1/dir2/file.txt";
    
    int i = strlen(path) - 1;
    int c = 0;
    while (i >= 0 && c != 2) {
        if (path[i] == '/') {
            c++;
        }
        i--;
    }
    
    std::cout << (path + i + 1) << "\n";
    
    return 0;
}
1
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
19.10.2018, 15:57
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
С ходу не вспоминается ничего кроме неявного int и неявного приведения типов.
Необязательными являются threads.h, stdatomic.h вместе с _Atomic, _Complex.
И даже массивы переменной длины(VLA), которые всегда преподносят как базовую возможность C,
на самом деле являются необязательными для поддержки.
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
И зачем их в таком случае вообще добавили в стандарт?
Не знаю, это вопрос не ко мне

Выше ссылочка, там цитата из стандарта, что мол предоставляем более безопасные версии.
Ряд проверок от программиста пропадает, пользуйте, если хотите.
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
знают о граблях в этих функциях и умеют обходить
Как же прекрасно, когда грабли убирают.
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
В чем смысл strcpy_s тоже непонятно если есть strncpy
Например, strncpy не проверяет аргументы на NULL.
А может всё ради макроса, который позволяет понять, что эти функции есть?
Лично я их не использовал никогда.
0
 Аватар для COKPOWEHEU
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,095
19.10.2018, 16:34
Цитата Сообщение от Croessmah Посмотреть сообщение
Например, strncpy не проверяет аргументы на NULL.
А смысл в ней? Ясно же, что передача в такую функцию NULL это ошибка в другом месте кода. И функции просто неоткуда знать как на такое реагировать. Да и передача неинициализированного указателя вместо NULL даже опаснее, но не отслеживается.
Да и вообще, все эти проверки проверок - не в стиле Си ("мы считаем, что программист знает что делает, и если делает именно так, то ему это зачем-то нужно"), а скорее Java или C#.
Цитата Сообщение от Croessmah Посмотреть сообщение
А может всё ради макроса, который позволяет понять, что эти функции есть?
Да вы раскрыли страшный заговор! Оказывается, все эти функции с суффиксом _s нужны только чтобы незаметно протащить в стандарт макрос __STDC_LIB_EXT1__
Цитата Сообщение от stu4ent2018 Посмотреть сообщение
вот тебе самое простое:

Правда, можно уменьшение i перенести повыше, это еще чуть-чуть упростит код
C++
1
2
3
4
5
6
7
8
9
  int i;
  int c = 0;
  for(i = strlen(path)+1; i > 0; i--){
    if (path[i] == '/'){
      if(++c == 2)break;
    }
  }
  
  std::cout << (path + i) << "\n";
0
0 / 0 / 0
Регистрация: 20.09.2018
Сообщений: 70
20.10.2018, 18:35  [ТС]
COKPOWEHEU, Что такое strlen(path) и break?
0
 Аватар для COKPOWEHEU
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,095
21.10.2018, 08:46
Вообще-то, вам было бы полезнее найти ответы на эти вопросы самостоятельно. Так же, как и раньше на форматную строку "%ms".
strlen() - функция определения длины строки. В данном случае мы переходим к последнему элементу, с которого начнем поиск слешей.
break - оператор выхода из цикла или switch.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.10.2018, 08:46

Разделение полного пути к файлу на диск, директории, имя и расширение
Написать функцию pathsplit( char *path, char *split) для расщепления полного пути к файлу на диск, директорий, имя и расширение, которые...

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
Новые блоги и статьи
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него. https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952 Инструкция внутри. Сразу отвечу: А в PvP с ним. . .
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru