我想獲取當前文件夾的父目錄,我有程序。 我需要包含在我有的C程序中。我試圖通過字符串方法來解決它,但我覺得可以有更好更簡單的方法。例如:如果他的路徑是「C:\ Application \ Config」,那麼我想得到 - 「C:\ Application」正義的父路徑。
有人可以幫助我嗎?如何在C程序中獲取當前文件夾的父目錄?
感謝, 普里
我想獲取當前文件夾的父目錄,我有程序。 我需要包含在我有的C程序中。我試圖通過字符串方法來解決它,但我覺得可以有更好更簡單的方法。例如:如果他的路徑是「C:\ Application \ Config」,那麼我想得到 - 「C:\ Application」正義的父路徑。
有人可以幫助我嗎?如何在C程序中獲取當前文件夾的父目錄?
感謝, 普里
要就地在其最後一個反斜槓截斷的字符串:
char pathname[MAX_PATH];
GetCurrentDirectory(MAX_PATH, pathname);
char* last_backslash = strrchr(pathname, '\\');
if (last_backslash)
{
*last_backslash = '\0';
}
還有PathRemoveFileSpec(),它基本上做同樣的事情。 – Luke 2011-03-08 16:19:04
在Windows操作系統中,你需要的API函數被調用GetCurrentDirectory()。
http://msdn.microsoft.com/en-us/library/aa364934%28v=vs.85%29.aspx
有時候,只是如果你不怕被MAX_PATH
加入\..
就足夠了。
很難回答你的問題,因爲你一旦擁有它,你還沒有真正指定你想要的路徑。如果你想改變到新的目錄,那很簡單,你只需要使用你通常用來改變目錄的函數,但是把它傳遞給「..」而不是完整的路徑 - 這是因爲在所有理智的文件系統上,「..」是一個'魔術'目錄,它存在於所有其他目錄中,並且指向其父目錄。
如果你想在跳到它之前在新目錄上執行一些字符串函數,你的問題立即變得更加難以解決。我這樣做的方式反映了RichieHindle的解決方案 - 將當前目錄從完整路徑上剝離,然後您將父目錄的路徑留下,您可以根據這個路徑仔細查看您的內容。
該程序必須運行哪些操作系統? – nmichaels 2011-03-08 14:12:37
示例路徑暗示Windows – Ferruccio 2011-03-08 14:16:23
@Ferruccio:是的,但這並不意味着它只是Windows。 – nmichaels 2011-03-08 14:21:05