我的C程序从配置中接收一些文件路径的最简单方法是什么?

时间:2015-04-22 17:35:49

标签: c linux posix

我有一个当前可通过命令行参数配置的应用程序

myprog  -fooFile 'foo.txt' -barFile 'bar.txt'

命令行参数有点麻烦所以我想允许这些配置的其他途径,但我有点失望,它看起来更复杂,然后它教它应该是。

解决方案1:使用环境变量

我可以让我的程序查找MYPROG_FOO_FILEMYPROG_BAR_FILE envorinment变量。实现只是一个getenv但是env变量是全局的并且增加了混乱并且也很难配置。特别是对于GUI应用程序,因为许多窗口管理器不会来源" .profile"在初始化期间。

解决方案2:使用配置文件

由于fooFile和progFile是一种静态配置值,将它们放在某个配置文件中似乎更好:

fooFile = /home/hugomg/foo.txt
barFile = /home/hugomg/bar.txt

但afaik在C中没有简单的方法从文件中读取任意长的字符串。我是否真的需要创建一个循环来保持为此重新分配缓冲区?

或者,由于我的所有值都是文件名,是否有某些#define某处指定了路径字符串的最大大小?

2 个答案:

答案 0 :(得分:1)

使用简单语法的配置文件方法对我来说很好。

由于您使用的是Linux,因此可以使用getline来读取该文件。它可以处理任意长度的行并为您管理内存分配。

答案 1 :(得分:0)

如果您的应用程序具有GUI,您可能希望用户在应用程序中对其进行配置。在这种情况下,您可能希望使用数据库来存储配置;通过这种方式,您可以在其中验证数据,因此您的用户无法编写错误的配置文件。我建议使用SQLite:它在文件中提供完整的数据库,并且非常易于使用。

http://www.sqlite.org/