void main(void) { double num; char *str; int count, sign; printf("실수를 입력해 주세요 : "); scanf("%lf", &num); str = ecvt(num, 5, &count, &sign); printf("변환된 실수 = %s\n", str); printf("소수점의 위치 = %d, 부호 = %d\n", count, sign); }
프로그램 실행화면
char *ecvt(double value, int count, int *dec, int *sign);
실수를 문자 또는 문자열로 바꾸어 주는 함수이다. 조금 복잡한 함수이고 결과값도 가공을 해야지 정확한 값이 된다. 우선 이 함수는 반환값이 char * 즉 포인터이다.
첫 번째 인자로 넘어간 실수가 문자열로 변환되어 그 주소값이 반환되는 것이다. 두 번째 인자는 문자열을 몇 번째 자리까지 생성할 것인지 정해주는 역할을 한다.
위의 프로그램은 5를 입력했기 때문에 출력된 값이 31400으로 5자리 인 것을 알 수 있다. 3번째 인자는 소수점의 위치를 알려준다.
반환된 값은 소수자리 구분 없이 해당 숫자가 그대로 문자로 치환된 형태이다 소수점의 자리값 정보가 있어야 원래 값으로 복원할 수 있다.
그리고 마지막 4번째 인자는 입력된 실수의 부호가 저장된다. 양수이면 0, 음수이면 1이 저장된다.