【发布时间】:2011-10-29 18:14:36
【问题描述】:
看到我做了一个程序,它只使用创建一个新文件
fopen()
现在我想在 ma 程序中打印该文件的完整路径。
linux 用 c 编程怎么可能?
【问题讨论】:
-
创建文件的路径是操作系统而不是编程语言的问题
看到我做了一个程序,它只使用创建一个新文件
fopen()
现在我想在 ma 程序中打印该文件的完整路径。
linux 用 c 编程怎么可能?
【问题讨论】:
在 main() 中,您应该获得可执行文件的完整路径为 argv[0]。您的文件已在此处创建。
另外,AFAIK,fopen 原型是
FILE * fopen(const char *restrict filename, const char *restrict mode);
那么简单
fopen()
行不通(如果我们谈论的是标准 C)。
【讨论】:
你已经有了一个文件名,所以问题更多的是如何检测它已经是绝对路径还是相对路径,并将后者变成绝对路径。
如果它已经是绝对路径,那么字符串将以/ 开头。如果它不是绝对路径,那么您知道它是相对于您当前的工作目录的。鉴于此,您可以确定进程的当前工作目录并将文件路径附加到该目录。
如果您还想将其解析为真实路径(解析符号链接,删除 . 和 .. 部分),您可以使用 realpath 函数。
【讨论】: