Так же, как и в strtod, в стандартной библиотеке C strtoul есть возможность преобразования текста в unsigned long.
Опираясь на пример из вашего предыдущего вопроса:
#include <errno.h>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
unsigned int intValue;
char *e,s[100];
fgets(s,100,stdin); if( s[strlen(s)-1]=='\n' ) s[strlen(s)-1]=0;
errno=0;
intValue= strtoul(s,&e,16);
if( *e || errno==EINVAL || errno==ERANGE )
puts("error");
else
printf("intValue=0x%04x\n", intValue);
Если вы не укажете базу, она может читать в виде обычного целого, шестнадцатеричного, если с префиксом 0x, и восьмеричногоесли у вас есть ведущий ноль (но большинство людей об этом забывают, и я столкнулся с проблемами, когда люди ставили лидирующие нули для форматирования, а это испортило преобразования)