Da ist basename() .
Füttern Sie es mit einem Pfad (in Form eines char*
) und es wird Ihnen den Basisnamen (das ist der Name der gewünschten Datei/des gewünschten Verzeichnisses) in Form eines weiteren char*
zurückgeben .
BEARBEITEN:
Ich habe vergessen, Ihnen mitzuteilen, dass die POSIX-Version von basename()
modifiziert seine Argumentation. Wenn Sie dies vermeiden möchten, können Sie die GNU-Version von basename()
verwenden Stellen Sie dies in Ihrer Quelle voran:
#define _GNU_SOURCE
#include <string.h>
Im Austausch diese Version von basename()
gibt eine leere Zeichenfolge zurück, wenn Sie sie mit füttern, z. /usr/bin/
wegen des abschließenden Schrägstrichs.
Sie wollen basename(), das auf so ziemlich jedem POSIX-artigen System vorhanden sein sollte:
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);
}