Вывести название последнего каталога - C (СИ)
Формулировка задачи:
Дана строка, содержащая полное имя файла. Выделить из строки название последнего каталога (без символов ""). Если файл содержится в корневом каталоге, то вывести символ "".80 символов. При реализации программы необходимо использовать функции для обработки строк из библиотек stdlib.h и string.h и обязательно использовать функции из этих библиотек. Буду очень благодарен
Решение задачи: «Вывести название последнего каталога»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
void PrintLastCatalog(const char * path)
{
char * pch, partOfPath[100] = {'\0'};
pch=strrchr(path,'/');
if (pch == NULL)
puts("Error: Invalid file path.");
else
{
strncpy(partOfPath,path,pch - path);
pch=strrchr(partOfPath,'/');
if (pch == NULL)
puts("\"\"");
else
printf ("%s\n",pch + 1);
}
}
int main ()
{
char path1[] = "/media/andryuha/CA90-A86A1/myText.txt";
char path2[] = "/w0rkhide.odt";
PrintLastCatalog( path1);
PrintLastCatalog( path2);
return 0;
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы для работы с файловой системой и строками.
- Создается функция
PrintLastCatalog, которая принимает в качестве аргумента путь к файлу. - Внутри функции создаются две переменные:
pch- указатель на последний символ в строке пути, иpartOfPath- строка, которая будет содержать часть пути до последнего каталога. - С помощью функции
strrchrнаходится последний символ в строке пути, который является символом '/'. Если такой символ не найден, выводится сообщение об ошибке. - Если символ найден, то с помощью функции
strncpyв строкуpartOfPathкопируется часть пути от начала до последнего каталога. - Затем снова с помощью функции
strrchrнаходится последний символ в строкеpartOfPath, который является символом '/'. Если такой символ не найден, выводится пустая строка. - Если символ найден, то выводится название последнего каталога.
- В функции
mainсоздаются две константные строки, которые представляют пути к файлам. - Затем вызывается функция
PrintLastCatalogс передачей в нее первого пути. - После этого вызывается функция
PrintLastCatalogс передачей в нее второго пути. - Программа возвращает 0, что означает успешное выполнение.