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



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

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

命令行参数有点麻烦,所以我想为这些配置提供其他途径,但我有点失望,因为它看起来比它教的更复杂

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

我可以让我的程序查找MYPROG_FOO_FILEMYPROG_BAR_FILE环境变量。实现只是一个getenv,但env变量是全局的,会增加混乱,也很难配置。特别适用于GUI应用程序,因为许多窗口管理器在初始化过程中不提供".profile"。

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

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

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

但是,在C语言中,从文件中读取任意长的字符串并不是一种简单的方法。我真的需要做一个循环来不断重新定位缓冲区吗?

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

我觉得你的配置文件方法很简单

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

如果您的应用程序有GUI,您可能希望用户在应用程序中对其进行配置。在这种情况下,您可能希望使用数据库来存储您的配置;这样,您就可以在数据进入时验证数据,这样您的用户就不会编写错误的配置文件。我建议使用SQLite:它在一个文件中提供了一个完整的数据库,而且非常容易使用。

http://www.sqlite.org/

最新更新