C 언어 - 문자열을 숫자로 atoi / atol / atoll / atof

컴퓨터/C

728x90
반응형

문자열의 숫자는 숫자가 아니다. 

문자열에서의 숫자는 숫자의 형태를 문자로 표현을 한 것입니다. 따라서 숫자로서의 기능이 아닌 문자로서의 기능만을 할 수 있습니다. (연산을 할 수 없습니다.)

char char_num[5] = "111" // 111의 값이 아닌 '1','1','1'인 문자열 입니다.
int num = 111 // 졍수형 숫자 111

 

문자열 안의 숫자를 계산하려면? 

일단 문자열안에 있는 숫자를 하나씩 빼낸 후 숫자의 형태로 바꿔주면 프로그램 안에서 숫자의 형태로 바꿔줄 수 있습니다. 이렇게 된다면 계산이 가능해질 것입니다.

구현을 하기위해 간단하게 생각해보면 다음 같은 전제조건이 필요할 것입니다.

  • 문자열 안에 숫자만이 들어있는가 ? 
  • 문자열안에 들어있는 숫자의 자릿수를 파악 
  • 각 문자열로 표현된 숫자를 숫자를 표현하는 자료형으로 변경 및 계산

이런 형태의 구현을 C언에서는 함수의 형태로 제공해 줍니다. 

 

함수 atio / atol / atoll / atof 

C언어에서 문자열의 숫자들을 숫자의 형태로 바꾸기 위해서 제공되는 함수입니다. 

stdlib.h에 포함되어 제공되는 함수입니다.

#include<stdlib.h>
int atoi(const char*nptr) // 문자열 --> int형 정수로 변환
long int atol(const char*nptr) // --> long int
long long int atoll(const char*nptr) // long long int
double atof(const char*nptr) // double

 

 

사용해보기

#include<stdio.h>
#include<stdlib.h>
int main()
{
	char str1[] = "125"; // 문자열에 저장된 숫자 
	printf("str1에 atoi 함수 사용 값 : %d \n", atoi(str1)); // int형으로 변환
	printf("str1에 atoi 함수 사용 값 : %f \n", atof(str1)); // double형으로 변환

	char str2[] = "3.1415920";
	printf("str2에 atoi 함수 사용 값 : %d \n", atoi(str2)); // int형으로 변환
	printf("str2에 atoi 함수 사용 값 : %f \n", atof(str2)); // double형으로 변환

	char str3[] = "문자열 숫자 3.1415920";
	printf("str3에 atoi 함수 사용 값 : %d \n", atoi(str3)); // int형으로 변환
	printf("str3에 atoi 함수 사용 값 : %f \n", atof(str3)); // double형으로 변환
	return 0;
}

위와 같은 결과로 다음 함수들을 사용 시 주의사항을 유추해 볼 수 있습니다.

  • 문자열 내에 숫자를 제외한 문자가 들어있으면 반환 값은 0이다.
  • 만약 실수 형태의 문자열을 정수 형태의 atoi함수를 사용하면 소수점 아래의 숫자는 확보할 수 없다.

이런 C언어에서 제공되는 함수를 이용하면 손쉽게 문자열 안에 데이터를 숫자로 변경할수 있습니다.

728x90
반응형

Commnet

G91개발일지

Gon91(지구일)

91년생 공학엔지니어의 개발일지

TODAY :

YESTER DAY :

TOTAL :