【发布时间】:2017-02-11 22:45:30
【问题描述】:
考虑一个文件ArgumentFile.txt
int a=100;
int b[3] = { 5, 2, 5 };
double c = 0.0014;
还有主代码code.c
int main(int argc, char *argv[])
{
if (argc > 1) FILE *f = fopen(argv[1], "r");
ParseFile(f); // Set the parameters based on file
DoStuff(a,b,c); // Run the process based on the parsed arguments
}
然后用户可以通过以下方式传递参数
./CodeExecutable ArgumentFile.txt
是否有从文件解析参数的标准解决方案?从命令行解析参数将相当于getopt?
【问题讨论】:
-
请注意,
fopen(argv[1], "r")和Source(argv[1])太简单了。应该是if (argc > 1) { FILE *f = fopen(argv[1], "r"); ... -
modern从命令行获取参数的方法是使用getopt或getopt_long。详情见此帖:stackoverflow.com/questions/1973742/… -
@bruceg 谢谢!是否有与
getopt等效的方法,它可以方便地不解析命令行参数而是来自文件的参数? -
@chux 感谢帖子已编辑!
-
作为 C 代码变量声明的输入文本文件的格式与问题的其余部分完全不一致,这表明该文件将包含与
getopts()可以处理的命令行参数等效的内容。
标签: c file parameters arguments parameter-passing