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

C++ 为什么我的for循环不能正确获取argv?,c++,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<<

所以我对编码是新手,我想知道为什么我的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;
            }
        }
    }
}
intmain(intargc,char*argv[]){
布尔伊斯资本[500];
布尔资本;
布尔空间[500];
布尔空间;
布尔回文;

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

for(int j=1; argv[j][0]!='-'; j++){
    cout<<argv[j][0];
    if('-'==argv[j][0]){
这部分说明:如果
argv[j][0]
不是
a
-

这一行:

    if('-'==argv[j][0]){
说明:仅当
argv[j][0]
a
-

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

也许你想要这条线

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

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

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

2)注意循环条件应考虑<代码> ARC< <代码> /P>


3) 应将
isCapital
isSpace
初始化为“all false”

我建议您在调试器中单步执行,以查看程序的具体功能,并找出与预期的不同之处。我还建议使用警告进行编译。如何运行它?作为程序参数传递的dp是什么?输入是什么?预期输出是什么?
for(int j=1;argv[j][0]!='-';j++){
您将访问
argv
超出范围,因为您没有将循环限制为
argc
(argv[j][i]=('s'|'s'))
不会做您认为它会做的事情。您想要
(argv[j][i]='s'| argv[j][i]='s'))
。该程序应该做什么?提示:标准库中有一些函数可以检查字符是空格(
std::isspace()
)还是大写字符(
std::isupper()
)在
中。好的,我所要做的就是将for循环中的!=改为@shawnkene-其他编程语言将构造
if(argv[j][I]=('c''c'))
解释为“test if
argv[j][I]
等于
'c'
'c'
”但是,C++代码不这样做。<代码>如果语句是一个坏主意,因为它的含义在C++中与你所期望的完全不同。查找“位操作”以了解该测试实际所做的细节。在ASCII <代码> x= =(‘C’′’c’)中。
结果相当于
x==“c”
),这是因为编码的工作方式(小写字母与大写字母相同,只需一个额外的位集),所以它表面上看起来似乎可以工作。。。
for(int j=1; j < argc; j++){
if((argv[j][i])==('c'|'C'))
if(argv[j][i] == 'c' || argv[j][i] == 'C')