作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我目前正在尝试从命令行中使用 argv[] 获取数字。换句话说,我试图从
获得 2./计算器-q 2
我目前的设置是这样的:
#include <iostream>
using namespace std;
int check_q(char* argv[]){
float q, qa;
if(atoi(argv[1]) == q){
qa = atof(argv[2]);
}
if(atoi(argv[3]) == q){
qa = atof(argv[4]);
}
if(atoi(argv[5]) == q){
qa = atof(argv[6]);
}
if(atoi(argv[7]) == q){
qa = atof(argv[8]);
}
return qa;
}
int main(int argc, char *argv[]){
float qa = 0;
check_q(argv);
cout << qa << endl;
return 0;}
对我做错了什么有什么想法吗?
最佳答案
您不是通过检查 argc
的值来查看有多少参数传递给了程序。如果您只传递两个参数,那么访问 argv[3]
将产生未定义的行为;所以你必须先检查参数的数量。
此外,如果您要查找值为 "-q"
的参数,请与 "-q"
进行比较:
if (std::string(argv[1]) == "-q")
您将其转换为数字并与未初始化的变量进行比较,这不会做任何有用的事情。
关于c++ - 如何从主 C++ 之外的 argv[] 获取输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15193272/
我是一名优秀的程序员,十分优秀!