2011-03-08 40 views
2

我想獲取當前文件夾的父目錄,我有程序。 我需要包含在我有的C程序中。我試圖通過字符串方法來解決它,但我覺得可以有更好更簡單的方法。例如:如果他的路徑是「C:\ Application \ Config」,那麼我想得到 - 「C:\ Application」正義的父路徑。
有人可以幫助我嗎?如何在C程序中獲取當前文件夾的父目錄?

感謝, 普里

+0

該程序必須運行哪些操作系統? – nmichaels 2011-03-08 14:12:37

+0

示例路徑暗示Windows – Ferruccio 2011-03-08 14:16:23

+0

@Ferruccio:是的,但這並不意味着它只是Windows。 – nmichaels 2011-03-08 14:21:05

回答

4

要就地在其最後一個反斜槓截斷的字符串:

char pathname[MAX_PATH]; 
GetCurrentDirectory(MAX_PATH, pathname); 
char* last_backslash = strrchr(pathname, '\\'); 
if (last_backslash) 
{ 
    *last_backslash = '\0'; 
} 
+0

還有PathRemoveFileSpec(),它基本上做同樣的事情。 – Luke 2011-03-08 16:19:04

1

有時候,只是如果你不怕被MAX_PATH加入\..就足夠了。

1

很難回答你的問題,因爲你一旦擁有它,你還沒有真正指定你想要的路徑。如果你想改變到新的目錄,那很簡單,你只需要使用你通常用來改變目錄的函數,但是把它傳遞給「..」而不是完整的路徑 - 這是因爲在所有理智的文件系統上,「..」是一個'魔術'目錄,它存在於所有其他目錄中,並且指向其父目錄。

如果你想在跳到它之前在新目錄上執行一些字符串函數,你的問題立即變得更加難以解決。我這樣做的方式反映了RichieHindle的解決方案 - 將當前目錄從完整路徑上剝離,然後您將父目錄的路徑留下,您可以根據這個路徑仔細查看您的內容。

相關問題