Programming Language/C2010. 10. 14. 19:31

 

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
Posted by BLUE-NOTE