Я пытаюсь преобразовать шестнадцатеричное число в десятичное число. Что я придумал до сих пор:C, конвертировать шестнадцатеричное число в десятичное число без функций
#include <unistd.h>
#include <stdio.h>
long convert(char *input, short int *status){
int length = 0;
while(input[length])
{
length++;
}
if(length = 0)
{
*status = 0;
return 0;
}
else
{
int index;
int converter;
int result = 0;
int lastNumber = length-1;
int currentNumber;
for(index = 0; index < length; index++){
if(index == 0)
{
converter = 1;
}
else if(index == 1)
{
converter = 16;
}
else{
converter *= 16;
}
if(input[lastNumber] < 45 || input[lastNumber] > 57)
{
*status = 0;
return 0;
}
else if(input[lastNumber] > 45 && input[lastNumber] < 48)
{
*status = 0;
return 0;
}
else{
if(input[lastNumber] == 45)
{
*status = -1;
return result *= -1;
}
currentNumber = input[lastNumber] - 48;
result += currentNumber * converter;
lastNumber--;
}
}
*status = -1;
return result;
}
}
int main(int argc, char **argv)
{
char *input=0;
short int status=0;
long rezult=0;
if(argc!=2)
{
status=0;
}
else
{
input=argv[1];
rezult=convert(input,&status);
}
printf("result: %ld\n", rezult);
printf("status: %d\n", status);
return 0;
}
Как-то я всегда получаю resoult 0. Ia я также не разрешается использовать любые другие функции, наружные видные (кроме Printf). Что может быть неправильным с моим кодом выше?
Это немного сложнее понять код, который не использует английский для своих имен. :/ – unwind
Если это поможет, я могу перевести код на английский. – NejcZ
Здесь я перевел несколько слов, надеюсь, что это поможет! – NejcZ