Я пытаюсь вынуть заданный байт из массива char, у которого есть указатель, прикрепленный к нему. см. пример ниже. (Я исключила заголовки и т.д.)указатели и массивы 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!");
}
}
Я всегда получаю, что «Не велят матч», когда я запускаю его, сделать кого-нибудь есть идеи, как сделать его работу, как планировалось?
Я благодарен за любые входы.
Пожалуйста, открепите свой код. – hivert
Несвязанное примечание: 'if (byteNbr> lengthOfStr)' должно быть 'if (byteNbr> = lengthOfStr)', за исключением случаев, когда это нормально сравнивать с завершающим нулем. – Nabla
'return byteNbr <= lengthOfStr && char2compare == str [byteNbr-1];' – BLUEPIXY