为什么我的for循环无法正确获取argv?

时间:2018-11-02 23:27:17

标签: c++

所以我是编码新手,我想知道为什么我的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]!='\0'; i++){
            if((argv[j][i])==('c'|'C')){
                isCapital[j]=true;
                break;
                cout<<isCapital[j];
            }
        }
        for(int i=0; argv[j][i]!='\0'; i++){
            if((argv[j][i]==('s'|'S'))){
                isSpace[j]=true;
                break;
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您的代码中有几个错误,但我认为以下代码是主要错误:

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]){

说:仅在argv[j][0] -

时执行if语句的主体

这两个是矛盾的,因此执行绝不会进入if语句的主体

也许你想要这行

for(int j=1; argv[j][0]!='-'; j++){

成为

for(int j=1; j < argc; j++){

顺便说一句:

@swordfish在评论中写道

1)注意

if((argv[j][i])==('c'|'C'))

可能不是您想要的。您可能想要:

if(argv[j][i] == 'c' || argv[j][i] == 'C')

2)请注意,您的循环条件应考虑argc

3)应该将isCapitalisSpace初始化为“ all false”