【发布时间】:2015-07-06 17:22:27
【问题描述】:
我有一个接受可选参数的程序。必要的参数是文件和整数(1 个或更多)。可选参数是字符串和整数的混合。
所以命令行上的正确输入可能是:
./main trace_file 8 12 # (only necessary arguments)
./main –n 3000000 –p page.txt trace_file 8 7 4 # (with optional arguments)
我需要将trace_file 之后的整数放入一个数组中。当启用可选参数时,我无法弄清楚如何执行此操作,因为命令行上有另一个整数。非常感谢朝着正确的方向前进,因为我不知道该怎么做。
编辑: 到目前为止,我解析参数的所有内容是:
for(j=2, k=0; j<argc; j++, k++) {
shift += atoi(argv[j]);
shiftArr[k] = 32 - shift;
bitMaskArr[k] = (int)(pow(2, atoi(argv[j])) - 1) << (shiftArr[k]);
entryCnt[k] = (int)pow(2, atoi(argv[j]));
}
但这只有在没有输入可选参数时才有效。
【问题讨论】:
-
到目前为止你写的代码是什么样子的?
-
要发布的内容很多。该程序适用于学校的作业,我们正在模拟地址分页。所以,我问的问题实际上只是我程序的一个“简单”部分
-
但是你想看什么?我真的只是想知道如何获得'trace_file'之后的整数,无论用户如何在命令行上输入它们(例如./main trace_file 8 7 4 –n 3000000 –p page.txt)
-
了解如何创建 MCVE (How to create a Minimal, Complete, and Verifiable Example?) 或 SSCCE (Short, Self-Contained, Correct Example) — 两个名称和链接用于相同的基本思想。您应该能够将代码简化为管理选项的主程序部分,并在打印其他参数的选项处理代码之后创建一个循环。您应该能够在大约 30 行内完成,可能更少。您也可以在 SO 上搜索类似的问题;有很多,我敢肯定。
-
刚刚进行了编辑。感谢您的回复。
标签: c command-line getopt