2013-05-01 57 views
0

這個問題可能有點天真,但我想知道是否有可能在C代碼中獲取文件名的目錄部分。例如,假設我有以下的Linux文件:以C代碼獲取文件的目錄

/home/user/Documents/Work/report.txt

,我想獲得字符串 「/ home/user中/文檔/工作/」

有沒有任何C函數來做這樣的事情?另外,即使我以Linux文件爲例,我希望能夠在任何操作系統上獲得文件的目錄列表。

預先感謝您。

+0

看最後一個分隔符:/ /pubs.opengroup.org/onlinepubs/9699919799/functions/strrchr.html)。 – pmg 2013-05-01 10:53:43

+0

它看起來像strrchr()將更有用的定位文件的基名而不是其目錄。你會如何使用它來查找目錄? – Decave 2013-05-01 10:56:49

+0

@Decave你NUL終止字符串在'strrchr()'返回的位置。但是,真的,使用正確的工具來完成任務 - 'dirname()'。看到我的答案。 – 2013-05-01 10:57:48

回答

0

這是dirname()功能是什麼:

char path[] = "/var/www/index.html"; 
char *dirn = dirname(path); 
printf("Dirname: %s\n", dirn); 
+1

注意:C標準沒有描述'dirname()'(儘管它要做OP)。 – pmg 2013-05-01 10:58:40

+0

酷 - 不知道這存在。非常感謝。 – Decave 2013-05-01 10:58:58

+0

@pmg我相信這是POSIX,但? – 2013-05-01 11:09:24

2

使用strrchr()和[`strrchr()`](HTTP更換一個'\0'

#define PATH_SEPARATOR_CHAR '/' 
char text[10000] = "/home/user/Documents/Work/report.txt"; 
char *last = strrchr(text, PATH_SEPARATOR_CHAR); 
if (last) { 
    *last = 0; 
    printf("path is '%s'\n", text); 
} else { 
    printf("Invalid text\n"); 
}