#include <libgen.h>
The basename() function shall take the pathname pointed to by path and return a pointer to the final component of the pathname, deleting any trailing '/' characters.
If the string consists entirely of the '/' character, basename() shall return a pointer to the string "/" . If the string is exactly "//" , it is implementation-defined whether '/' or "//" is returned.
If path is a null pointer or points to an empty string, basename() shall return a pointer to the string "." .
The basename() function may modify the string pointed to by path, and may return a pointer to static storage that may then be overwritten by a subsequent call to basename().
The basename() function need not be reentrant. A function that is not required to be reentrant is not required to be thread-safe.
The basename() function shall return a pointer to the final component of path.
No errors are defined.
The following sections are informative.
The following program fragment returns a pointer to the value lib, which is the base name of /usr/lib.
#include <libgen.h> ... char *name = "/usr/lib"; char *base; base = basename(name); ...
In the following table, the input string is the value pointed to by path, and the output string is the return value of the basename() function.
Input String | Output String | |||
"/usr/lib" | "lib" | |||
"/usr/" | "usr" | |||
"/" | "/" | |||
"///" | "/" | |||
"//usr//lib//" | "lib" |
dirname() , the Base Definitions volume of IEEE Std 1003.1-2001, <libgen.h>, the Shell and Utilities volume of IEEE Std 1003.1-2001, basename