我有一个名为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]);
答案 0 :(得分:2)
libgen.h
和basename()
(或dirname.h
和base_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;
}