這個問題可能有點天真,但我想知道是否有可能在C代碼中獲取文件名的目錄部分。例如,假設我有以下的Linux文件:以C代碼獲取文件的目錄
/home/user/Documents/Work/report.txt
,我想獲得字符串 「/ home/user中/文檔/工作/」
有沒有任何C函數來做這樣的事情?另外,即使我以Linux文件爲例,我希望能夠在任何操作系統上獲得文件的目錄列表。
預先感謝您。
這個問題可能有點天真,但我想知道是否有可能在C代碼中獲取文件名的目錄部分。例如,假設我有以下的Linux文件:以C代碼獲取文件的目錄
/home/user/Documents/Work/report.txt
,我想獲得字符串 「/ home/user中/文檔/工作/」
有沒有任何C函數來做這樣的事情?另外,即使我以Linux文件爲例,我希望能夠在任何操作系統上獲得文件的目錄列表。
預先感謝您。
使用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");
}
看最後一個分隔符:/ /pubs.opengroup.org/onlinepubs/9699919799/functions/strrchr.html)。 – pmg 2013-05-01 10:53:43
它看起來像strrchr()將更有用的定位文件的基名而不是其目錄。你會如何使用它來查找目錄? – Decave 2013-05-01 10:56:49
@Decave你NUL終止字符串在'strrchr()'返回的位置。但是,真的,使用正確的工具來完成任務 - 'dirname()'。看到我的答案。 – 2013-05-01 10:57:48