ITOA.c
- ItoA함수를 직접 작성해 봅시다.
/*
-실습) 주어진 실수형 data를 문자열로 만들어주는 프로그램을 짜시오.
-입력은 float num;
scanf("%f",&num);
double num;
scanf("%lf",&num);
-출력은 printf("%s\n",str);
-1) num가 음수인지 check.
-2) 소수점 이상, 이하 분리해서 처리.
*/
#include<stdio.h>
#define MAX 30
int main(void){
float num; //입력받을 실수 .
char str[MAX]; //문자로 들어갈 배열.
int i=0; //* str의 인덱스 넘버.
int inum; //num의 소숫점 윗부분.
int cnt=0; //자릿수 개수(소숫점 위), 한자리수의 값(소숫점 아래).
int j=1,x=1; //반복문의 카운터들.
int lnum; //==inum.
puts("문자열로 만들 실수 data를 입력하시오. :");
scanf("%f",&num);
inum=(int)num;
num-=inum; //처음 num값에서 소숫점 아래부분만 표시한 부분.
if(num<0) //-1) num가 음수인지 check.
{
str[i++]='-';
inum*=-1;
num*=-1;
}
lnum=inum;
//-2) 소수점 이상, 이하 분리해서 처리.
//소수점 이상 자릿수 구해서 그 수를 하나씩 배열에 넣어주는 식.
while(inum != 0)
{
inum/=10;
cnt++;
}
for(;x<cnt;x++)
j*=10;
for(x=1;x<=cnt;x++){
str[i]=lnum/j+'0'; //0을 더해주는 것은 str이 char형 배열이기 때문. 아스키 값으로 표시된다.
lnum=lnum%j;
j/=10;
i++;
}
if(num!=0.0){
str[i]='.';
i++;
}
if(num==0.0)
str[i]='\0';
//소수점 이하. 10을 곱한값을 정수형에 넣어서 일의 자리수만 구하여 배열에 집어넣음.
cnt=0;
j=1;
x=1;
while(num!=0.0){
cnt=num*10;
str[i]=cnt+'0';
num=num*10;
num=num-cnt;
i++;
}
puts("문자열로 만든 결과.....");
str[i]='\0';
printf("\n%s\n\n", str);
return 0;
}
이 글은 스프링노트에서 작성되었습니다.
'Programming Language > C' 카테고리의 다른 글
C Tutorial (역순화 문자열) (0) | 2010.10.14 |
---|---|
C Tutorial (문자열크기비교) (0) | 2010.10.14 |
C Tutorial (문자열to실수형) (0) | 2010.10.14 |
C Tutorial (비트단위 내부표현) (0) | 2010.10.14 |
C Tutorial (16진법to10진법) (0) | 2010.10.14 |