gpt4 book ai didi

c - 在 C 中具有动态位置的 fopen() 函数

转载 作者:太空宇宙 更新时间:2023-11-04 06:15:23 28 4
gpt4 key购买 nike

我只想了解如何从动态位置使用 fopen() 函数打开文件。我的意思是,例如它将是一个系统文件,而在另一台计算机上,该文件可以位于另一个位置。因此,如果我不动态地在我的代码中设置我的位置,我的程序将无法在另一台计算机上运行。那么我如何才能动态设置位置以便我的程序在任何地方找到这个文件?

最佳答案

您可以(而且通常应该)通过传统的 int argc, char**argv formal arguments 将程序参数传递给您的 main你的 main。另见 this .

(我主要关注 Linux,但您可以将我的回答调整为适用于其他操作系统和平台)

因此您将使用一些约定 来传递该文件 path (不是位置,该词通常指的是 memory addresses )到您的程序(通常通过命令行启动您的程序)。另见 this answer .

您可以使用(至少在 Linux 上)getopt_long(3)解析程序参数。但是有other ways ,您可以显式处理 main 的参数。

你也可以使用一些 environment variable传递该信息。您将使用 getenv(3) 查询它.另请阅读 environ(7) .

许多程序都有 configuration file s(其路径连接到程序中,但通常可以由程序参数或环境变量给出)并且是 parsing他们找到相关的文件路径。

你甚至可以考虑一些其他的 inter-process communication将文件路径传递给您的程序。毕竟,文件路径只是一些字符串(在 path_resolution(7) 中解释了限制和解释)。有很多方法可以将一些数据传递给程序。

另请阅读 globbing , 特别是 glob(7) .在 Unix 上,the shell is expanding the program arguments .您可能想使用类似 glob(3) 的函数或 wordexp(3)在其他地方获得的东西(例如在某些配置文件中)获得类似的扩展。

顺便说一句,一定要在使用 fopen 时检查它是否失败。您可能会使用 perror,例如 here .

另请查看几个 free software 的源代码项目(可能在 github 上)以获取灵感。

关于c - 在 C 中具有动态位置的 fopen() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47030723/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com