2011-07-21

[C語言] realpath 取得真實路徑

realpath 真是一個方便又好用函數,簡簡單單就可以取得一個路徑的絕對路徑,還可以檢查檔案是否存在。


#include <stdlib.h>

char *realpath(const char *path, char *resolved_pa​​th)

函數說明:realpath()用來將參數 path 所指的相對路徑轉換成絕對路徑後存於參數 resolved_pa​​th 所指的字符串數組或指針中。
返回值: 成功則返回指向 resolved_pa​​th 的指針,失敗返回 NULL,錯誤代碼存於 errno。

PS:當路徑檔案不存在時也會丟出 NULL,但 resolved_pa​​th 中仍會有化簡後的路徑。


#include <stdio.h>
#include <unistd.h>

int main(int argc, char **argv){
    if (argc != 2) {
        printf("Usage: %s <file>\n", argv[0]);
        return 1;
    }

    char path[1024];
    char *exist;

    exist=realpath(argv[1], path);

    /*經過化簡後的路徑*/
    puts(path);

    /*如果檔案不存在將會是 NULL*/
    if(exist==NULL){
        puts("NULL");
    }else{
        puts(exist);
    }

    return 0;
}

0 回應: