Je tam basename() .
Naplňte jej cestou (ve tvaru char* ) a vrátí vám základní název (to je název požadovaného souboru/adresáře) ve tvaru jiného char* .
EDIT:
Zapomněl jsem vám říct, že verze POSIX basename() upravuje svůj argument. Pokud se tomu chcete vyhnout, můžete použít GNU verzi basename() přidáním tohoto ve vašem zdroji:
#define _GNU_SOURCE
#include <string.h>
Výměnou za tuto verzi basename() vrátí prázdný řetězec, pokud jej nakrmíte, např. /usr/bin/ kvůli koncovému lomítku.
Chcete basename(), které by mělo být přítomno v podstatě na jakémkoli systému 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);
}
Získejte poslední dirname/filename v argumentu cesty k souboru v Bash
Java ProcessBuilder:Výsledný proces se zablokuje