为什么我的for循环不能正确获取argv
Why does my for loop not get argv properly?
所以我是编码新手,我想知道为什么我的for循环没有正确地通过argv。当我运行它时,它根本不运行。以下是重要的代码:
int main(int argc, char* argv[]){
bool isCapital[500];
bool capital;
bool isSpace[500];
bool space;
bool palindrome;
cout<<"Test";
for(int j=1; argv[j][0]!='-'; j++){
cout<<argv[j][0];
if('-'==argv[j][0]){
cout<<j;
for(int i=0; argv[j][i]!=' '; i++){
if((argv[j][i])==('c'|'C')){
isCapital[j]=true;
break;
cout<<isCapital[j];
}
}
for(int i=0; argv[j][i]!=' '; i++){
if((argv[j][i]==('s'|'S'))){
isSpace[j]=true;
break;
}
}
}
}
您的代码中有几个错误,但我认为下面的代码是主要的错误:
for(int j=1; argv[j][0]!='-'; j++){
cout<<argv[j][0];
if('-'==argv[j][0]){
所以让我们更详细地看一下。
for(int j=1; argv[j][0]!='-'; j++){
^^^^^^^^^^^^^^^
这部分说:只有当argv[j][0]
不是-
时,才执行for循环的主体
此行:
if('-'==argv[j][0]){
says:如果argv[j][0]
是-
,则仅执行if语句的主体
这两者是矛盾的,所以执行永远不会进入if语句的主体
也许你想要这条
for(int j=1; argv[j][0]!='-'; j++){
成为
for(int j=1; j < argc; j++){
BTW:
正如@箭鱼在评论中所写
1( 注意
if((argv[j][i])==('c'|'C'))
可能不是你想要的。你可能想要:
if(argv[j][i] == 'c' || argv[j][i] == 'C')
2( 请注意,循环条件应考虑argc
3(isCapital
和isSpace
应初始化为"全假">
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 使用指针从C++中的数组中获取最大值
- 如何获取std::result_of函数的返回类型
- 如何在openssl-ecc中获取十六进制格式的私钥
- 使用Unreal C++获取VR耳机的世界位置/方向
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 从C字符串中获取奇怪的字符串长度
- 为什么我的for循环不能正确获取argv
- 从python中调用C++函数并获取返回值
- 如何获取一个数字的前3位
- 获取字符串的长度并将其分配给数组
- C ++编译器如何获取argv字符串的长度
- 获取过程的 argc 和 argv 的替代方法
- 在visualc++中调试代码时,获取argc为零和argv为null
- 尝试从命令行获取输入时出现char**argv[]segfault
- 获取运行文件名:argv[0] vs boost::filesystem::current_path()
- 如何从main c++之外的argv[]获取输入
- 如何从argv中获取文件名并将其与ifstream一起使用/将其更改为ofstream的txt