我试图从一个字符数组中取出一个给定的字节,该数组上有一个指针。见下面的例子。(我排除了标题等)
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!");
}
}当我运行它时,我总是知道“它们不匹配”,有人知道如何使它按计划工作吗?
我感谢大家的投入。
发布于 2014-02-16 09:32:27
变化
if(char2compare==*str+(byteNbr)){ 至
if(char2compare==*(str + byteNbr - 1)){ *str+(byteNbr)等价于a + 2 = c
发布于 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上索引的数组。
https://stackoverflow.com/questions/21809467
复制相似问题