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