删除C char数组中最后一个正斜杠(包括斜杠)之前的所有内容

时间:2016-08-14 17:12:06

标签: c text-processing

我有一个名为arg的char数组。 arg[0]是文件的路径。我不知道确切的路径,所以我们只能说出/path/to/file。我不想知道完整路径,我只想知道文件名(在这种情况下为file)。那么如何在最后一个正斜杠(包括斜杠)之前删除所有内容,从而产生"file",而不是"/path/to/file""alternatefile",而不是"/alternatepath/to/alternatefile"

这是我的代码:

#include <stdio.h>
int main(int argc, char *argv[]) {
    char *arg[] = argv;
    // This is where I need code to trim everything before the last forward-slash
    printf("%s\n", arg[0]);
}

所以我需要像arg[0] = strtrm(everythingbefore, "/", arg[0]);

这样的东西

2 个答案:

答案 0 :(得分:2)

libgen.hbasename()(或dirname.hbase_name())通常是否可用并为此目的进行了调整?

#include <stdio.h>
#include <libgen.h>

int main() {

    printf("%s\n", basename("/alternatepath/to/alternatefile"));

    return 0;
}

<强> PRINTS

alternatefile

答案 1 :(得分:1)

这是一个简单的解决方案:

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

int main(int argc, char *argv[]) {
    if (argc > 0) {
        char *base = strrchr(argv[0], '/');
        if (base) {
            base += 1;
        } else {
            base = argv[0];
        }
        printf("%s\n", base);
    }
    return 0;
}