从命令行使用范围

时间:2016-10-07 10:50:05

标签: c++ command-line-arguments

我有一个任务,我需要向用户显示用户想要的数学表。但是输入必须使用命令行参数。我知道如何用单输入做到这一点..但是我必须添加一个功能,以便当用户输入:我的程序5-7我必须显示5,6和7的乘法表..我可以解决这个?

这必须在C ++中完成

这是我的代码:

#include <iostream>
#include <cctype>
#include <iomanip>
using namespace std;

int main(int argc,char *argv[]){
int i;
locale loc;
int tables[argc-1];

if(argc <=1){
 cout<<"NO ARGUMENTS PASSED"<<endl;
 exit(0);
}

for(i=1;i<=argc;i++){
if( isdigit(argv[i],loc)){
tables[i] = atoi(argv[i]);
}
}

for (i=1; i<=argc;i++){
 cout<<argv[i]<<endl;
}


}

1 个答案:

答案 0 :(得分:1)

首先决定是否处理&#34;表2-3&#34;,&#34;表2 - 3&#34;或两者兼而有之。

让我们说我们选择两者。因此,对于一个参数情况,argc必须是2(记住argv [0]是程序名称)或者对于三个参数情况必须是4。如果它不是2或4,则打印出一条用法消息,告诉用户如何使用该程序并退出。

如果is为4,则argv [1]必须是整数,argv [2]必须是字符串&#34; - &#34;,并且argv [3]必须是整数。您可能还需要argv [3]大于argv [1]。 所以测试这些。 strcmp将测试中间。函数strtol()提供了一种测试有效整数的简单方法(如果它是一个整数,则结束指针应指向退出时的nul)。

如果argc为2,则字符串必须在格式12-30中,整数,连字符和整数。有几种方法可以测试。一种是调用strtol,然后检查结束指针是否指向连字符,然后在连字符后再次对字符调用strtol。您也可以使用函数sscanf()。

现在决定如何处理负数或零的情况,并且巨大的值可能超出机器精度。

最后打印出表格。