所以我是编码新手,我想知道为什么我的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;
}
}
}
}
答案 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]
不是 -
此行:
if('-'==argv[j][0]){
说:仅在argv[j][0]
是-
这两个是矛盾的,因此执行绝不会进入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)应该将isCapital
和isSpace
初始化为“ all false”