Как извлечь последнюю часть пути к файлу в C? - PullRequest
0 голосов
/ 22 мая 2019

Я хочу иметь возможность найти последнюю часть окончательного пути и создать новый файл на основе этого. Например

/Users/use/Projects/projectname/test.txt

Исходя из этого, я хочу иметь возможность создать новый файл с именем

test.newfile.txt

Как бы я это сделал?

1 Ответ

1 голос
/ 22 мая 2019

Соедините вдоль разделителя (здесь, "/"), а затем возьмите последний элемент. Затем создайте строку для использования в качестве нового имени файла на основе этого. Перефразировано по ссылке ниже;

#include <stdio.h>
#include <string.h>

int main()
{
    char str[] = "strtok splits once per call, call many times to split full string";
    int init_size = strlen(str);
    char delim[] = "/";

    char *ptr = strtok(str, delim);

    while(ptr != NULL)
    {
        last = ptr //[p]oin[t]e[r]
        ptr = strtok(NULL, delim);
    }
    strcat("newfile.", last)

    //open a file with that name, write to it, etc.

    return 0;
}

источник: https://www.codingame.com/playgrounds/14213/how-to-play-with-strings-in-c/string-split

Это создаст «последнюю» точку в последней части строки после последнего вхождения разделителя, поэтому просто имя файла. Затем вы можете использовать strcat () для конкатенации строки с ним.

Если вы хотите иметь text.newfile.txt вместо newfile.text.txt, вы можете снова разделить строку text.txt, на этот раз вдоль ".", И:

temp = strcat(original_filename, newfile)
new_filename = strcat(temp, original_file_extenstion)
...