float를 char *로 어떻게 변환합니까?


11

Electrical Engineering Stack Exchange에 대해이 질문을했으며 여기에서 지시되었습니다.

꽤 자기 설명 적; float를 char *로 변환하는 방법은 무엇입니까? float 'resistance'가 지속적으로 업데이트되는 코드가 있습니다. 'resistance'의 값을 갖도록 변수 'result'를 업데이트하고 싶습니다. 다음은 도움이 될 수있는 코드 중 일부입니다.

const char * result = "";
float resistance = 2.5;

result = resistance; //This bit (obviously) doesn't work

당신의 도움을 주셔서 감사합니다!

답변:


15

표준 Arduino 라이브러리에는이라는 기능이 있습니다 dtostrf(). 나는 이것을 "소수점 문자열 부동 소수점"으로 생각합니다. 부동 소수점, 정수의 너비 (정확한 경우), 소수점 이하 자릿수 및 채우려는 버퍼를 전달합니다.

참고하십시오! 버퍼를 제공해야하며 충분한 양 이상을 제공해야합니다. 끝에 NUL 문자를 저장하기 위해 1을 추가하는 것을 잊지 마십시오.

char result[8]; // Buffer big enough for 7-character float
dtostrf(resistance, 6, 2, result); // Leave room for too large numbers!

이것은 and 와 result같은 값 을 제공 합니다 (따옴표 제외). 마지막 예를 참고하십시오-너무 큰 경우 숫자를 자르지 않으며 10 자 (최종을 잊지 마십시오 )가 버퍼에 오버플로되었습니다 ..." 1.23"" -1.23""123456789"resultNUL

또한 음수 너비를 지정하면 답을 오른쪽 정렬하지 않고 왼쪽 정렬합니다 (시작 대신 끝에 공백을 넣습니다).


트릭을 멋지게 했어! 대단히 감사합니다 선생님 :)
higgsboson

-2

기본적으로 4 바이트 변수 (float)를 4 바이트 문자열로 변환하려고합니다 (문자 변수는 1 바이트 크기입니다). Arduino 데이터 형식에 대한 자세한 내용은 여기 http://playground.arduino.cc/Code/DatatypePractices

이러한 질문에 대한 답변을 시도해보십시오 https : //.com/questions/18270974/how-to-convert-a-float-to-a-4-byte-char-in-c

/programming/24420246/c-function-to-convert-float-to-byte-array

나는 const char * result = "";당신의 예에서 사용에 혼란스러워 합니다.

"const"키워드는 변수를 "읽기 전용"으로 지정하므로 수정할 수 없습니다. https://www.arduino.cc/en/Reference/Const

편집 : 불행히도 현재 위의 솔루션을 테스트 할 Arduino 장치가 없습니다.


1
const않는 키워드 하지 변수를 만들기는 읽기 전용입니다. 여기서 변수는 포인터이며 상수 일 필요는 없습니다. const키워드는 자격 데이터가 지적되고있는 포인터 자체가 없습니다. 즉, 해당 포인터를 통해 문자열을 수정할 수 없습니다. 상수 포인터를 원하는 경우이를 포인터로 선언하십시오 char * const result(또는 데이터에 const char * const result대한 const포인터를 원하는 경우 const).
Edgar Bonet
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.