2012-02-07 7 views
0

PIC18F2550을 사용 중입니다. C18 언어로 프로그래밍하십시오.PIC C18 : 문자열을 이중으로 변환

void dtoa( char *szString,    // Output string 
      double dbDouble,   // Input number 
      unsigned char ucFPlaces) // Number of digits in the resulting fractional part 
{ 
    // ?????????????? 
} 

주 프로그램에서 다음과 같이 호출 할 :

void main (void) 
{ 
    // ... 
    double dbNumber = 123.45678; 
    char szText[9]; 
    dtoa(szText, dbNumber, 3); // szText becomes "123.456" or rounded to "123.457" 
    // ... 
} 
+0

sprintf()를 찾아 '.' 올바른 십진수 문자는 null입니까? – kenny

+0

@kenny sprintf()는 PIC에서 약간의 optomistic 일 가능성이 있습니다 –

+0

@MartinBeckett 공간이 있으면 사용할 수 있다고 확신합니다. 또는 012 자신의 dtoa() – kenny

답변

1

그래서 하나를 쓰기
나는 아래와 같은 문자열로 이중 변환하는 기능이 필요합니다!

5 분, 그래프 용지와 커피가 조금만 있으면 충분합니다. 뿐만 아니라 많은 많은에서 사용 된 "베어 http://www.sparetimelabs.com/tinyprintf/index.html

1

작은 printf와 당신을 위해 작동 할 수있는 좋은 인터뷰 질문 -metal "임베디드 시스템 컴파일러)는 표준 C 라이브러리에있는 것들에 대한 유용한 소스를 시작하기에 좋은 곳입니다.

NEWLIB dtoa.c 소스는 소스 트리의 src/newlib/libc/stdlib 하위 디렉토리에있는 이 파일은 약간 이상하게 들릴 것입니다. Newlib은 함수 선언을 위해 이상한 매크로를 사용하지만, 적응하기 쉽습니다. BSD-li censed, 당신은 당신이 그것에 저작권 고지를 유지하는 경우에 당신이 그것으로 원하는 무엇 이건을 거의 할 수있다.

+0

해당 페이지에서 언급 한 바와 같이 : "물론 작은 것은 제한이 있고 부동 소수점을 지원하지 않습니다 ..." –

+0

아, 그래. 이제 나는 우리 자신의 부동 소수점에서 어렴풋이 떠올랐다. – Throwback1986

1

일반적으로, 레드햇의 NEWLIB C 라이브러리 (BSD 라이센스, Cygwin에서의 일부 : 사실
그것은