1. 程式人生 > 其它 >Linux C: 從路徑中提取目錄名和檔名

Linux C: 從路徑中提取目錄名和檔名

今天無意中發現了兩個函式,可以方便的從給定的路徑中提取目錄名檔名。以前介紹過用strrchr()函式去做的方式(Linux C: 從指定路徑中獲取檔名)。

不多廢話,就是下面這兩個函式:

bool generate_transfer_file(const uint8_t *audio_header, const char *transcode_file_path) {

    if (!audio_header) {
        ALOGE("input <audio_header> can not be null");
        return false;
    }

    
if (!transcode_file_path) { ALOGE("input <transcode_file_path> can not be null"); return false; } FILE *transcode_file = fopen(transcode_file_path, "rb"); if (!transcode_file) { ALOGE("open transcode file failed"); return false; } char *dir_name = dirname
(transcode_file_path);
char *file_name = __posix_basename(transcode_file_path); ALOGI("dir: %s, file name: %s", dir_name, file_name); return true; }

比如輸入的路徑是:/storage/emulated/0/Android/data/com.realsil.android.common.media/files/dest.aac,可以輸出:

dir: /storage/emulated/0/Android/data/com.realsil.android.common.media/files, file name: dest.aac

我是在android的環境下測試的,linux的話可能沒有__posix_basename()函式,可以找找basename()函式。

char *dirname(char *path);
char *basename(char *path);

char *path="/dir1/dir2/dir.suffix";
dirname(path) ==> /dir1/dir2
basename(path) ==> dir.suffix

linux 也內建了這兩個命令。。

使用時不要忘了包含標頭檔案:libgen.h