Соедините вдоль разделителя (здесь, "/"), а затем возьмите последний элемент. Затем создайте строку для использования в качестве нового имени файла на основе этого. Перефразировано по ссылке ниже;
#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)