所以我在启动程序时尝试使用cmd来获取参数,但是我仍然遇到将变量从char转换为int的问题,因此它们可以与程序的其余部分一起使用。谢谢你的帮助提前。
int main(int argc, char* argv[]) {
int n = 0, a = 0, b = 0, func = 0, choice = 0;
double w;
if(argc < 10)
{
cout << "The Program requires -f <Function> -a <Starting Point> -b <Ending Point> -m <Method> -n <Number of slices>" << endl;
exit(0);
}
else
{
int func, a, b, choice, n;
int i;
for(int i = 1; i < argc - 1; i+=2)
{
if(argv[i] == "-f"){
func = *argv[i + 1];}
else if(argv[i] == "-a"){
a = *argv[i + 1];}
else if(argv[i] == "-b"){
b = *argv[i + 1];}
else if(argv[i] == "-m"){
choice = *argv[i + 1];}
else if(argv[i] == "-n"){
n = *argv[i + 1];}
else {
cout << "Input is Invalid" << endl;
exit(0);}
cout << argv[i] << endl;
}
w = (b-a)/double(n);
next(n, a, b, w, func, choice);
}
return 0;
}
编辑:所以我重新构建了我的代码,看起来像上面那样,它确实编译,但我只得到else语句。比如什么时候启动程序使用如下行:./ a3 -f 5 -a 1 -b 10 -m 3 -n 100.我不知道为什么程序恢复到else语句“输入无效”而不是其他if if else语句。
答案 0 :(得分:0)
老兄,你必须从:
开始int n = 0, a = 0, b = 0, func = 0, choice = 0;
然后你有一个指向定义为
的整数类型的字符指针 char* func, a, b, choice, n;
我相信标准,指针应该指向它们的类型,这就是你的问题。
解决方案:
我猜你可以在分配ptrs之前使用它将它转换为char。
答案 1 :(得分:0)
你有字符串比较的问题。
if(argv[i] == "-f")
不检查argv [i]是否等于“-f”它检查指针值是否与指向常量字符串“-f”的指针相同是错误的。 你应该使用字符串比较方法,如strcmp。
也是所有标志需要值为什么循环是:
for(int i = 1; i < argc; i++)
{
if(i + 1 != argc)
因为它配对你可以把它写成:
for(int i = 1 ; i < argc - 1; i += 2)