为什么我的for循环不能正确获取argv

Why does my for loop not get argv properly?

本文关键字:获取 argv 不能 我的 for 循环 为什么      更新时间:2023-10-16

所以我是编码新手,我想知道为什么我的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(isCapitalisSpace应初始化为"全假">