我的 C 程序从配置中接收一些文件路径的最简单方法是什么?
What is the simplest way for my C program to receive some file paths from configuration?
我有一个当前可通过命令行参数配置的应用程序
myprog -fooFile 'foo.txt' -barFile 'bar.txt'
命令行参数有点麻烦,所以我想允许这些配置的其他途径,但我有点失望,它看起来比它教的更复杂。
解决方案一:使用环境变量
我可以让我的程序查找 MYPROG_FOO_FILE
和 MYPROG_BAR_FILE
环境变量。实现只是一个 getenv
,但环境变量是全局变量,会增加混乱,也很难配置。特别适用于 GUI 应用程序,因为许多 window 管理员在初始化期间不会获取“.profile”。
解决方案 2:使用配置文件
由于 fooFile 和 progFile 是一种静态配置值,将它们放在配置文件中的某个地方似乎更好:
fooFile = /home/hugomg/foo.txt
barFile = /home/hugomg/bar.txt
但是据我所知,在 C 中没有简单的方法可以从文件中读取任意长的字符串。我真的需要做一个循环来为此不断重新分配缓冲区吗?
或者,由于我所有的值都是文件名,是否有一些 #define
某处指定路径字符串的最大大小?
如果您的应用程序有 GUI,您可能希望您的用户在应用程序中配置它。在这种情况下,您可能希望使用数据库来存储您的配置;这样你就可以验证你的数据,所以你的用户不能写一个错误的配置文件。我建议为此使用 SQLite:它在一个文件中提供了一个完整的数据库,并且非常易于使用。
我觉得你的语法简单的配置文件方法很不错。
由于您在 Linux,您可以使用 getline 来阅读文件。它可以处理任意长度的行并为您管理内存分配。
我有一个当前可通过命令行参数配置的应用程序
myprog -fooFile 'foo.txt' -barFile 'bar.txt'
命令行参数有点麻烦,所以我想允许这些配置的其他途径,但我有点失望,它看起来比它教的更复杂。
解决方案一:使用环境变量
我可以让我的程序查找 MYPROG_FOO_FILE
和 MYPROG_BAR_FILE
环境变量。实现只是一个 getenv
,但环境变量是全局变量,会增加混乱,也很难配置。特别适用于 GUI 应用程序,因为许多 window 管理员在初始化期间不会获取“.profile”。
解决方案 2:使用配置文件
由于 fooFile 和 progFile 是一种静态配置值,将它们放在配置文件中的某个地方似乎更好:
fooFile = /home/hugomg/foo.txt
barFile = /home/hugomg/bar.txt
但是据我所知,在 C 中没有简单的方法可以从文件中读取任意长的字符串。我真的需要做一个循环来为此不断重新分配缓冲区吗?
或者,由于我所有的值都是文件名,是否有一些 #define
某处指定路径字符串的最大大小?
如果您的应用程序有 GUI,您可能希望您的用户在应用程序中配置它。在这种情况下,您可能希望使用数据库来存储您的配置;这样你就可以验证你的数据,所以你的用户不能写一个错误的配置文件。我建议为此使用 SQLite:它在一个文件中提供了一个完整的数据库,并且非常易于使用。
我觉得你的语法简单的配置文件方法很不错。
由于您在 Linux,您可以使用 getline 来阅读文件。它可以处理任意长度的行并为您管理内存分配。