Dzień dobry,
potrzebuję zamienić napis w systemie hex/oct na liczbę w systemie dec, lecz nie mam pomysłu jak rozwiązać mój problem.
Próbowałem za pomocą atoi zamienić napis na cyfrę, ale np. dla '0x43' funkcja atoi konwertuje na '0'.
Wczytuje ciąg znaków dlatego, że nie wiem w jakim systemie użytkownik poda liczbę, a wczytując ciąg znaków mogę łatwo to sprawdzić w taki sposób:
/*wyswietlanie k-tego najmniejszego elementu */
int main()
{
char napis[100]; /*jest to tablica wprowadzonych liczb przed konwertowaniem */
int liczba;
unsigned i=0, j=0, k, n; /* n - ile liczb bedzie podancyh, k - k-ta liczba najmniejsza do wyswietlenia */
printf("Podaj ile elementow bedziesz wprowadzal:\n");
scanf("%d",&n);
int tablica[n]; /*tworzenie tablicy ktora bedzie miala same cyfry dec */
printf("Podaj k:\n");
scanf("%d", &k);
/*wczytywanie do stringa */
for(;i<n; i++)
{
scanf("%s",napis);
if(napis[0]=='0')
{
if(napis[1]=='x')
{
printf("szesnastkowy\n");
}
else
{
printf("osemkowy\n");
liczba = atoi(napis); /*zle zamienia */
printf("%d", liczba);
}
}
if(napis[0]!='0')
{
printf("dziesietny\n");
liczba = atoi(napis);
tablica[i] = liczba;
}
}
return 0;
}