Вывести символы после определенного символа в отдельную строку - C (СИ)
Формулировка задачи:
Здравствуйте!
У меня есть строка (массив char[260]) с путем к файлу, например "C:\\Prog\\app.exe". Как можно вывести название файла в отдельную строку? Я примерно представляю что надо просканировать каждый символ на backslash, и когда сканирование достигнет последнего backslash, то выделить после этого символа оставшиеся и скопировать в новую строку, но у меня не очень получается это сделать.
Подскажите пожалуйста!
Решение задачи: «Вывести символы после определенного символа в отдельную строку»
textual
Листинг программы
char *get_file_name(const char *path) { char *filename; int length = strlen(path), i; for (i = length-1; i >= 0; --i) if (path[i] == '\\') break; ++i; filename = (char *)malloc((length - i + 1) * sizeof(char)); strcpy(filename ,path+i); return filename; }
Объяснение кода листинга программы
- Функция
get_file_name
принимает на вход указатель на строку -path
и возвращает указатель на строку -filename
. - Внутри функции создаются две переменные:
filename
иlength
. Переменнаяlength
инициализируется значением функцииstrlen
, которая считает количество символов в строкеpath
. Значение переменнойlength
будет использоваться для выделения памяти под строкуfilename
и для ограничения цикла. - Переменная
filename
инициализируется значениемNULL
. Позже ей будет присвоено значение выделенной памяти. - Далее идет цикл
for
, который проходит по всем символам строкиpath
в обратном порядке. Переменнаяi
итерируется отlength-1
до0
. Условие циклаif
проверяет, является ли текущий символ\\
. Если это так, то цикл прерывается иi
увеличивается на1
. - После цикла
for
выделяется память под строкуfilename
с помощью функцииmalloc
. Формулаlength - i + 1
используется для вычисления размера памяти, так как память выделяется под строку, которая начинается с символа после последнего\\
в строкеpath
. - С помощью функции
strcpy
в выделенную память копируется подстрокаpath+i
, начиная с символа после последнего\\
в строкеpath
. - В конце функции возвращается указатель на строку
filename
. - В коде не обрабатываются ошибки, которые могут возникнуть при выделении памяти или копировании строки.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д