2013-03-28 2 views
0

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 얻을. 위의 코드에서 무엇이 잘못 될 수 있습니까?

+2

이름에 영어를 사용하지 않는 코드를 이해하는 것은 상당히 어렵습니다. :/ – unwind

+0

도움이된다면 영어로 코드를 번역 할 수 있습니다. – NejcZ

+0

여기 몇 마디 말로 번역했습니다. 도움이 되길 바랍니다! – NejcZ

답변

2

이 :

if(dolzina = 0) 
{ 
    *status = 0; 
    return 0; 
} 

단순히 dolzina 테스트되지

, 그것은이 실행할 수있는 else 조항의 원인이 0에 있지만, dolzina 동일한 0으로 예상되는 결과를하지 않은를 설정하는 첫 번째 입니다.

비교하려면 물론 ==을 사용해야합니다.

+0

0을 테스트하지 않고 조건이 거짓이고 다른 것으로 들어가는가? – Rohan

+0

@Rohan 어, 네, 제 분석은 분명히 혼란 스러웠습니다. 고마워, 나는 그것을 지금 고쳐 줬다. 'else' 절은 * dolzina가 0 일 때 * 실행되지만 절대로 일어나지 않아야합니다. – unwind

+0

IF 문장에서 다른 변형을 시도했지만 지금까지 아무 것도 작동하지 않았습니다. 입력 한 내용에 문제가있을 수 있습니까? – NejcZ

관련 문제