basename() があります。
パスを入力します (char*
の形式) ) を実行すると、別の char*
の形式でベース名 (必要なファイル/ディレクトリの名前) が返されます。 .
編集:
basename()
の POSIX バージョンが その引数を変更します。これを避けたい場合は、GNU バージョンの basename()
を使用できます。 これをソースの先頭に追加します:
#define _GNU_SOURCE
#include <string.h>
このバージョンの basename()
と引き換えに フィードすると、空の文字列が返されます。 /usr/bin/
末尾のスラッシュのため。
basename() が必要です。これは、ほぼすべての POSIX っぽいシステムに存在するはずです:
http://www.opengroup.org/onlinepubs/000095399/functions/basename.html
#include <stdio.h>
#include <libgen.h>
int main() {
char name[] = "/foo/bar.txt";
printf("%s\n", basename(name));
return 0;
}
...
$ gcc test.c
$ ./a.out
bar.txt
$
#include <string.h>
char *basename(char const *path)
{
char *s = strrchr(path, '/');
if (!s)
return strdup(path);
else
return strdup(s + 1);
}