숫자를 문자열로 바꾸는 itoa함수, ltoa함수, ultoa함수, fcvt함수, ecvt함수, gcvt함수에 관한 내용입니다.


※요약

itoa : integer 값을 2진, 8진, 10진, 16진 문자열로 변환합니다.

ltoa : long 값을 2진, 8진, 10진, 16진 문자열로 변환합니다.

ultoa : unsigned long 값을 2진, 8진, 10진, 16진 문자열로 변환합니다.

fcvt : 실수(고정 소수점:float) 값을 문자열로 변환합니다.

ecvt : 실수(부동 소수점:double) 값을 문자열로 변환합니다.

gcvt : 실수 값을 부호와 소수점을 포함하여 문자열로 변환합니다.


※함수 원형 및 설명

char *itoa( int value, char *string, int radix );
char *ltoa( long value, char *string, int radix );
char *ultoa( unsigned long value, char *string, int radix );
//value : 문자열로 변환될 정수 값
//string : 변환된 문자열이 저장될 버퍼의 포인터
//radix : 값의 기수. 10진수는 10, 2진수는 2, 16진수는 16 등 2~36 사이의 값
//반환값 : 변환된 문자열이 저장된 string 버퍼의 포인터

char *fcvt( double value, int count, int *dec, int *sign );
//value : 문자열로 변환될 실수 값
//count : 변환 문자열 중 소수점 이하 숫자의 길이
//dec : 소수점의 위치가 저장될 변수의 포인터
//sign : 부호가 저장될 변수의 포인터
//반환값 : 변환된 문자열이 저장된 내부 정적영역 버퍼의 포인터

char *ecvt( double value, int count, int *dec, int *sign );
//value : 문자열로 변환될 실수 값
//count : 변환할 문자열의 길이
//dec : 소수점의 위치가 저장될 변수의 포인터
//sign : 부호가 저장될 변수의 포인터
//반환값 : 변환된 문자열이 저장된 내부 정적영역 버퍼의 포인터

char *gcvt( double value, int digits, char *string );
//value : 문자열로 변환될 실수 값
//digits : 변환 시 의미 있는 숫자의 길이
//buffer : 변환된 값을 저장할 문자열 버퍼의 포인터
//반환값 : 변환된 문자열이 저장된 string 버퍼의 포인터



※예제

#include <stdio.h>
#include <stdlib.h>		//itoa, ltoa, ultoa, fcvt, ecvt, gcvt

int main( void )
{
	int  nInt  = 1234567890;
	int  nInt2 = 255;
	long nLong = -1234567890L;
	unsigned long nULong = 345678902UL;

	float nFloat = 3.141592f;
	double nDouble = 3.14e+5;

	int radix;
	char buffer[100];
	int dec, sign;
	char *pbuffer;

	//10진 문자열로 변환
	radix = 10;
	itoa( nInt, buffer, radix );
	printf( "%s\n", buffer );

	ltoa( nLong, buffer, radix );
	printf( "%s\n", buffer );

	itoa( nULong, buffer, radix  );
	printf( "%s\n", buffer );

	//2진 문자열로 변환
	radix = 2;
	itoa( nInt2, buffer, radix );
	printf( "%s\n\n", buffer );

	//16진 문자열로 변환
	radix = 16;
	itoa( nInt2, buffer, radix );
	printf( "%s\n", buffer );

	//--- _fcvt, _ecvt, _gcvt ---
	pbuffer = fcvt( nFloat, 7, &dec, &sign );
	printf( "%s %d\n", pbuffer, dec );

	pbuffer = ecvt( nDouble, 10, &dec, &sign );
	printf( "%s %d\n", pbuffer, dec );

	pbuffer = gcvt( nDouble, 5, buffer );
	printf( "%s %d\n", pbuffer );

	pbuffer = gcvt( nDouble, 10, buffer );
	printf( "%s %d\n", pbuffer );

	return 0;
}


+ Recent posts