【问题标题】:compare argv[1][i] arrays C++ [closed]比较 argv[1][i] 数组 C++ [关闭]
【发布时间】:2013-04-09 08:50:02
【问题描述】:

我需要比较参数中的数组

有人能告诉我为什么这部分代码是错误的

{
for(int i=0;i<strlen(argv[3]);i++)
    if(strcmp((argv[3][i]),"c")==0){
        cout<<"C"<<endl;
        return (0);
    }

谢谢.....

【问题讨论】:

  • 可怕的格式,你甚至不解释“错误”是什么或做什么。
  • argv的类型是什么?那么 argv[3][i] 的类型是什么? strcmp 期待什么类型?
  • argv[3][i] 是字符串 argv[3] 中的一个数组,所以就像 kingsindian 说它不应该工作,但有没有其他方法

标签: c++ visual-studio


【解决方案1】:
if(strcmp((argv[3][i]),"c")==0)

这一行是错误的。

argv[3][i] 是一个字符,而不是一个字符串。你可能想要:

if(argv[3][i]=='c')

【讨论】:

  • 也试过了,但没用
  • 当你尝试你所说的“它说操作数类型不兼容”时
  • @AshFernando:您是否完全按照此处显示的方式进行了尝试,'c' 用单引号表示字符文字,而不是 "c" 用双引号表示字符串文字? (我假设argv 具有作为main 的第二个参数传递的字符串数组的传统含义;如果是别的东西,那么你需要告诉我们它是什么)。
  • 对不起,我用双引号和单引号一起工作,非常感谢
【解决方案2】:

我希望这是你想尝试的。

for(int i=0;i<strlen(argv[3]);i++)
{
if(argv[3][i]=='c')
   {
     cout<<"\n found c";

    }
}

【讨论】:

  • strcmp 比较字符串,而不是字符。您希望== 比较字符。
  • 修正比较...
猜你喜欢
  • 2020-07-25
  • 2017-01-12
  • 2013-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-08
  • 1970-01-01
  • 2014-12-29
相关资源
最近更新 更多