문자열을 가지고 float형으로 출력하는 함수 프로그래밍.
/************************************
written SeungHwan
File of MyAtof()
2008.08.19
************************************/
#include<stdio.h>
#include<math.h>
void Count_MyAtof(char* ptr , int* pmark , int* piValueCount , int* pdValueCount)
{
if(*ptr == '-')
{
*pmark = 1;
ptr++;
}
while((*ptr) != NULL)
{
while((*ptr) != '.')
{//정수부분
(*piValueCount)++;
ptr++;
}
ptr++; //소수점 지나가기
while((*ptr) != NULL)
{//소수부분
(*pdValueCount)++;
ptr++;
}
ptr++;
}
}
float MyAtof(char* ptr , int mark , int iValueCount , int dValueCount)
{
float result=0.0;
if(mark==1)
ptr++;
for( ; iValueCount>0 ; iValueCount--)
{//정수부 계산
result += (*ptr-'0')* (float)pow(10,(iValueCount-1));
ptr++;
}
ptr++; //소수점 지나가기
for( int i=1 ; dValueCount>0 ; i++ , dValueCount--)
{//소수부 계산
result += (*ptr-'0')* (float)pow(0.1 , i);
ptr++;
}
return mark==0 ? result : result*(-1) ;
}
void main()
{
int mark=0;
int iValueCount=0;
int dValueCount=0;
char temp[1024] = {"-12.93"};
Count_MyAtof(temp , &mark , &iValueCount , &dValueCount);
printf("%lf\n" , MyAtof(temp , mark, iValueCount , dValueCount));
}