指针和char数组(比较)

时间:2014-02-16 09:30:08

标签: c

我试图从一个附加了指针的char数组中取出一个给定的字节。见下面的例子。 (我已排除标题等。)

unsigned char compareByte(char *str, unsigned char byteNbr,
    unsigned char lengthOfStr, char char2compare)
{
  //I am stuck here, but this is what I tried to do
  if (byteNbr > lengthOfStr)
  {
    return (unsigned char) 0;
  }
  else
  {
    if (char2compare == *str + (byteNbr))
    {  //<- probably where it goes wrong
      return (unsigned char) 1;
    }
    else
    {
      return (unsigned char) 0;
    }
  }

}

int main()
{
  unsigned char result;
  char string[] = "abcdefg";
  unsigned char byte2Compare = 2; //want to take out 'b' from string
  result = compareByte(string, byte2Compare, strlen(string), 'b');
  if (result == 1)
  {
    printf("they match! \n");
  }
  else
  {
    printf("they don´t match!");
  }
}

当我运行它时,我总是得到“它们不匹配”,有人知道如何让它按计划运行吗?

我感谢任何投入。

2 个答案:

答案 0 :(得分:2)

if语句更改为以下,

if( char2compare == *(str + byteNbr - 1) )

*(str + byteNbr - 1)这意味着,解除引用(str在基址+ 12 - 1)),这意味着{的地址位置的值{1}}。这里(str + 1)表示下一个位置的1个字节。

注意:数组索引始终从sizeof(char)开始。因此,当您说要查找字节0时,您实际上是指在2处编入索引的数组。

答案 1 :(得分:1)

更改

if(char2compare==*str+(byteNbr)){   

if(char2compare==*(str + byteNbr - 1)){   

*str+(byteNbr)相当于a + 2 = c