Вывести символы после определенного символа в отдельную строку - 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;
}

Объяснение кода листинга программы

  1. Функция get_file_name принимает на вход указатель на строку - path и возвращает указатель на строку - filename.
  2. Внутри функции создаются две переменные: filename и length. Переменная length инициализируется значением функции strlen, которая считает количество символов в строке path. Значение переменной length будет использоваться для выделения памяти под строку filename и для ограничения цикла.
  3. Переменная filename инициализируется значением NULL. Позже ей будет присвоено значение выделенной памяти.
  4. Далее идет цикл for, который проходит по всем символам строки path в обратном порядке. Переменная i итерируется от length-1 до 0. Условие цикла if проверяет, является ли текущий символ \\. Если это так, то цикл прерывается и i увеличивается на 1.
  5. После цикла for выделяется память под строку filename с помощью функции malloc. Формула length - i + 1 используется для вычисления размера памяти, так как память выделяется под строку, которая начинается с символа после последнего \\ в строке path.
  6. С помощью функции strcpy в выделенную память копируется подстрока path+i, начиная с символа после последнего \\ в строке path.
  7. В конце функции возвращается указатель на строку filename.
  8. В коде не обрабатываются ошибки, которые могут возникнуть при выделении памяти или копировании строки.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.929 из 5
Похожие ответы