void 포인터 형식으로 float을 전달하는 함수를 작성하고 있습니다. 내가하려고하는 것은 플로트를 문자열과 동등한 것으로 변환하여 메모리에 이진 데이터를 저장할 수있게합니다. 사용자가 나에게float를 c로 된 문자열로 변환
float value = 3.14;
를 전달
void * f(void * data);
경우 아래 그림과 같이 내가 문자열로 변환하고 싶습니다 :
"3.14"
예를 들어, 다음과 같이 내 함수 호출입니다
내가 사용해야한다고 생각하는 접근법은 먼저 float 내의 값 수를 결정하는 것입니다 : 3.14 = 4 값. 그런 다음 각 값을 반복하여 문자로 변환해야합니다.
내가 겪고있는 몇 가지 문제는 다음과 같습니다. 1 : 주어진 float 값과 관련된 값의 수를 결정할 수 있는지 확실하지 않습니다. 2 : 어떻게 각 값을 해당 문자열로 변환합니까?
나는 itoa와 sprintf를 발견했습니다. 그러나 itoa는 표준 라이브러리의 일부가 아니며 sprintf가 원하는대로 할 것인지 여부를 확신 할 수 없습니다.
sprintf와 오버 플로우 수 있기 때문에
sprintf
는 (캐릭터, "%의 4.2f", 플로트) –당신은 아마'sprintf'을 원하는
snprintf
보다 더 위험하다. 당신은 숫자의 숫자를 (일반적으로) 알아낼 수 없다. - 예를 들어'1.2 '처럼 전달 된 것은'1.99999999999999'의 순서로 끝날 것이다. 부동 소수점은 정확하게 '0.2'를 표현할 수 없습니다 . –