android源码函数学习之basename与dirname

来源:互联网 发布:游戏帧数测试软件 编辑:程序博客网 时间:2024/06/06 01:33

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

通过命令:man 3 basename


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

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

比如:

#include <stdio.h>  #include <stdlib.h>  #include <string.h>  #include <libgen.h>    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()函数成对出现,不然会造成内存泄露。返回一个指针,指向为复制字符串分配的空间;如果分配空间失败

原创粉丝点击