문자열을 숫자로 변환하는 atoi함수, _atoi64함수, atol함수, atof함수에 관한 내용입니다.


※요약

atoi : 문자열을 integer 값으로 변환 합니다. (ascii to integer)

_atoi64 : 문자열을 __int64 값으로 변환 합니다.

atol : 문자열을 long 값으로 변환 합니다. (ascii to long)

atof : 문자열을 double 값으로 변환 합니다. (ascii to float)

무작정 atoi(아토이ㅋㅋ)로 외우는 것보다 "ASCii to integer, 아스키를 정수형으로" 같이 외우면 더 잘 기억납니다.


※함수 원형 및 설명

int atoi( const char *string );
//string : NULL로 종결되는 수식을 포함하는 문자열의 포인터
//반홥값 : 정수 값(int), 변환 실패시 0 리턴
//		   -2,147,483,648 ~ 2,147,483,647

__int64 _atoi64( const char *string );
//string : NULL로 종결되는 수식을 포함하는 문자열의 포인터
//반홥값 : 정수 값(__int64), 변환 실패시 0 리턴
//		   -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807

long atol( const char *string );
//string : NULL로 종결되는 수식을 포함하는 문자열의 포인터
//반홥값 : 정수 값(long), 변환 실패시 0L 리턴
//		   -2,147,483,648 ~ 2,147,483,647

float atof( const char *string );
//string : NULL로 종결되는 수식을 포함하는 문자열의 포인터
//반홥값 : 실수 값(double), 변환 실패시 0.0 리턴
//		   1.7E +⁄- 308 (15 digits)


각 데이터형 범위


예제

-atoi, _atoi64, atol, atof

#include <stdio.h>
#include <stdlib.h>

int main( )
{
	char *strInt     = "123456789";
	char *strInt64   = "1234567890123456789";
	char *strLong    = "123456789";
	char *strDouble  = "3.14e+100";
	char *strStrInt  = "value = 123456789";

	int nInt;
	__int64 nInt64;
	long lLong;
	double dDouble;
	
	nInt = atoi( strInt );
	printf( "%d\n", nInt );

	nInt = atoi( strStrInt );
	printf( "%d\n", nInt );
	
	nInt = atoi( &strStrInt[8] );
	printf( "%d\n", nInt );

	nInt64 = _atoi64( strInt64 );
	printf( "%I64d\n", nInt64 );

	lLong = atol( strLong );
	printf( "%ld\n", lLong );

	dDouble = atof( strDouble );
	printf( "%.2e\n", dDouble );
	
	dDouble = atof( strInt );
	printf( "%.2e\n", dDouble );

	return 0;
}


+ Recent posts