2013-05-07 3 views
0

먼저 무엇이 작동하는지 보여 주겠다. 나는 작동하지 않는 것을 보여줄 것이다. 이 코드는 올바른 결과를 제공합니다.PIC18의 사용자로부터 배열 값 가져 오기?

unsigned long timeOn; 
long d[10]; 

d[0] = 8; 
d[1] = 6; 
d[2] = 0; 
d[3] = 0; 
d[4] = 0; 
timeOn = 10000*d[0] + 1000*d[1] + 100*d[2] + 10*d[3] + d[4] ; 
printf("%lu",timeOn); 

출력 : I는 입력에 사용자에게 다음과 같은 값을 원하는 경우 86000

내가 다른 결과를 얻을 이것이 내가 가지고있는 코드입니다.

unsigned long timeOn; 
long d[10]; 
int i; 


for(i = 0; i < 5 ; i++) 
    { 
     while (!ConsoleIsGetReady()); 
     d[i] = ConsoleGet(); 

    } 

timeOn = 10000*d[0] + 1000*d[1] + 100*d[2] + 10*d[3] + d[4] ; 
printf("%lu",timeOn); 

BYTE ConsoleGet(void) 
{ 
    char Temp; 

    while(IFS1bits.U2RXIF == 0); 

    Temp = U2RXREG; 
    IFS1bits.U2RXIF = 0; 
    return Temp; 
} 

출력는 :

이 같은 방식으로 일을 생각하지 않는다 619328? 그러면 사용자가 다른 값을 입력하면 어떻게 될까요? 고맙습니다!

답변

0

콘솔이 정수가 아닌 문자 (즉, ASCII 코드)를 출력하는 것처럼 보입니다. 읽기 루프에서 d[i] = ConsoleGet() - '0';을 사용해보십시오.

+0

그런데'scanf ("% d", &d[i]);'대신에'd [i] = getchar(); '을 사용하면 똑같은 결과를 얻을 것입니다. 정수 값과 문자의 차이점은 숫자 코드 (ASCII 코드, '0'코드는 48, '1'코드는 49 등) – Inspired

+0

감사합니다. 정말 고마워요! – Ammar