首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >指针和字符数组(比较)

指针和字符数组(比较)
EN

Stack Overflow用户
提问于 2014-02-16 09:30:08
回答 2查看 75关注 0票数 0

我试图从一个字符数组中取出一个给定的字节,该数组上有一个指针。见下面的例子。(我排除了标题等)

代码语言:javascript
复制
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!");
  }
}

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

我感谢大家的投入。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-16 09:32:27

变化

代码语言:javascript
复制
if(char2compare==*str+(byteNbr)){   

代码语言:javascript
复制
if(char2compare==*(str + byteNbr - 1)){   

*str+(byteNbr)等价于a + 2 = c

票数 1
EN

Stack Overflow用户

发布于 2014-02-16 09:36:04

if语句更改为下面,

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

*(str + byteNbr - 1)这意味着取消引用(str at base address + 1 (2 - 1)),这意味着在(str + 1)地址位置的值。这里,1表示下一个位置的sizeof(char)字节。

注意:数组索引总是从0开始。因此,当您说要查找字节2时,实际上是指在1上索引的数组。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21809467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档