文件的父目录

有没有办法找到使用C程序的文件的父目录。 我想为该目录所具有的文件提供相同的权限。 为此,我想知道该文件的父目录。 任何帮助表示赞赏。

标准C中没有这样的function。您可以在Windows上尝试运气:GetFullPathName http://msdn.microsoft.com/en-us/library/aa364963%28v=vs.85%29.aspx

然后也许_splitpath http://msdn.microsoft.com/en-us/library/e737s6tf%28v=vs.80%29.aspx

但是正如所写的那样,做这类事情并不是标准function。

如果你有文件的路径,你可以通过使它成为绝对路径来手动完成(如果它是相对的(不是以Unix上的/开头,或者是letter:\\letter://在Windows上) )然后将其拆分为文件分隔符( /\ ),但我知道没有内置函数可以为您完成所有这些。

basenamedirname函数可能有所帮助,但是你需要自己弄清楚文件的足够路径,因为它们只能用于字符串; 他们不询问文件系统。

它不能保证做正确的事情 ,但你尝试过以下任何一种方法:

  • 如果您的文件名包含路径分隔符(例如/在Unix上,在Windows上为\ ),请使用例如strdup()复制字符串,并用零/空字符替换路径分隔符的最后一次出现strdup()使用例如strdup()找到strrchr() 。 生成的字符串将是文件的父目录。

  • 如果没有路径分隔符,则该文件位于当前工作目录中。 你尝试过使用过吗. ? 这个...链接适用于Unix和Windows。

上面有很多/hello.txt情况(例如文件/hello.txt什么?),但它应该是一个开始。