본문 바로가기

카테고리 없음

[C언어] 실수를 문자로 - ecvt()

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이 저장된다.