16 진수를 10 진수로 변환하려고합니다. 무엇 내가 지금까지 왔어요 것은 :C, 16 진수를 함수없이 10 진수로 변환
#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;
}
어떻게 든 내가 항상 IA도 (printf와 제외) 다른 outher 기능을 사용할 수 없습니다입니다 resoult 0 얻을. 위의 코드에서 무엇이 잘못 될 수 있습니까?
이름에 영어를 사용하지 않는 코드를 이해하는 것은 상당히 어렵습니다. :/ – unwind
도움이된다면 영어로 코드를 번역 할 수 있습니다. – NejcZ
여기 몇 마디 말로 번역했습니다. 도움이 되길 바랍니다! – NejcZ