我试图从一个附加了指针的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!");
}
}
当我运行它时,我总是得到“它们不匹配”,有人知道如何让它按计划运行吗?
我感谢任何投入。
答案 0 :(得分:2)
将if
语句更改为以下,
if( char2compare == *(str + byteNbr - 1) )
*(str + byteNbr - 1)
这意味着,解除引用(str
在基址+ 1
(2
- 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