По рекомендации @Yunnosch, вот мой комментарий в качестве ответа.
В вашей функции strrev
вы перебираете всю строку, то есть итерации для i
от нуля до len / 2
, вы правильно захватить символы, но оставшиеся итерации просто отменить это снова.
Таким образом, просто итерации от нуля до len >> 1
. Сдвиг битов обеспечивает целочисленное деление.
void strrev(char* const str)
{
const size_t len = strlen(str);
for(size_t i = 0; i < (len >> 1u); ++i)
{
const size_t j = len - 1u - i;
char c = str[i];
str[i] = str[j];
str[j] = c;
}
}