Большая часть кода OP - верный путь, но существуют различные ошибки кодирования.
Добавить условие теста
// for(i = (length-1), j = 0; i --, j++)
// v
for(i = (length-1), j = 0; i >= 0; i --, j++)
не может вызвать любую библиотеку Cфункция, кроме strlen ()
// intvalue += digit*pow(16,j);
intvalue += digit*(1u << (4*j));
Возвращает значение
Требование "... и возвращает целое значение"
//int intvalue = 0;
//...
//printf("int value is %d\n", intvalue);
//return 0;
unsigned intvalue = 0;
...
printf("integer value is %u\n", intvalue);
return intvalue;
Слишком маленький буфер
// unsigned char n[] = "";
// scanf("%c\n", n);
char n[100] = "";
scanf("%99s", n);
hexStringTouint ()
Функция не вызывается в main()
.
Существуют другие проблемы
A проще подход
unsigned hexStringTouint2(const char *str) {
unsigned value = 0;
while (*str) {
unsigned digit = hexCharTouint(*str); // tbd code
value = value*16 + digit;
str++;
}
return value;
}