android源码函数学习之basename与dirname

在阅读init.cpp源码的时候遇到该函数,小节一下:

通过命令:man 3 basename

android源码函数学习之basename与dirname_第1张图片

basename()返回的是指向文件名指针;

dirname()返回的是指向目录指针;

比如:

#include   
#include   
#include   
#include   
  
int main(int argc, char* argv[]){  

    char *dirc, *basec, *bname, *dname;
    char *path = "/etc/passwd";
    dirc  = strdup(path);
    basec = strdup(path);
    dname = dirname(dirc);
    bname = basename(basec);
    printf("dirname = %s, basename = %s\n", dname, bname);
    free(dirc);
    free(basec);
    return 0;
}
运行后:


可以看到结果:dirname 是最后“/”之前的指向指针,basename是指向文件名指针

注:strdup()函数是c语言中常用的一种字符串拷贝库函数,一般和free()函数成对出现,不然会造成内存泄露。返回一个指针,指向为复制字符串分配的空间;如果分配空间失败

你可能感兴趣的:(C语言)