如何在C中提取文件路径的最后一部分?

时间:2019-05-22 15:49:46

标签: c fopen

我希望能够找到最终路径的最后部分,并以此为基础创建一个新文件。例如

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

基于此,我希望能够创建一个名为“

”的新文件。
test.newfile.txt

我该怎么做?

1 个答案:

答案 0 :(得分:1)

沿着定界符(此处为“ /”)进行拼接,然后获取最后一个元素。然后基于该字符串创建一个用作新文件名的字符串。从下面的链接释义;

#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)