C언어 : atoi 함수

지환·2022년 1월 13일
0

C언어

목록 보기
22/37
post-thumbnail

atoi함수를 통해 이전에 했던 문자열 -> 정수 변환을 해보자.

atoi 함수에 대해 알아야 될 것이 있다.

  • 우리가 atoi함수를 사용하기 전에 atoi함수가 무엇인지 어떤 역할을 하는지 인지 해야된다.

  • #include <stdlib.h>에 내장된 함수인 atoi는 문자열을 숫자로 바꿔주는 함수다.

atoi의 구조

1. 문자열의 초반에 오는 공백 문자(white-space characters)는 무시한다.

  • whitespace : \t, \v, \n, \f, \r, ' '

  • 아스키코드로는 9부터 13까지, ' '는 32

  • man isspace 명령어를 사용해보자(리눅스 한정)

2. 부호(+, -)는 최대 한 개까지만 올 수 있다.

  • 만일, 두 개 이상이라면 0이 반환된다.

  • 부호가 없다면 기본 양수이다.

3. 숫자를 한번 읽기 시작한다면 다른 문자가 오기 직전까지만 읽는다.

  • ex) 1234 → 1234

  • ex) 12a34 → 12

  • 이때 다른 문자란 '0' ~ '9'를 제외한 모든 문자이다.

<코드>

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

void main()
{
	int first, second;
	char f_string[17], s_string[20];
	printf("input first number > ");
	gets(f_string);
	printf("input second number  >  ");
	gets(s_string);
	first = atoi(f_string);
	second = atoi(s_string);
	printf("%d * %d =  %d\n", first, second, first * second);


}

<결과>

  • char형으로 배열을 선언하고 gets 함수를 통해서 받았다. gets함수는 문자열로 받은 함수다.

atol, atof 함수와 원형을 알아보자.

  • atoi = char to int = 문자열을 정수 타입으로

  • atof = char to double = 문자열을 실수 타입으로

  • atol = char to long int = 문자열을 long 정수 타입으로 변환한다.

헤더파일 : <stdlib.h>

  • int atoi (const char* cStr);

  • double atof (const char* cStr);

  • long int atol (const char* cStr);

  • cStr이라고 적은 이유는 C스타일의 문자열이라는 것을 강조하기 위해서 변수명을 그렇게 지정했다.

  • 만약에 C++의 string을 이용했다면 c_str() 함수를 이용해서 C스타일의 문자열로 변환해서 이용해야한다.

reference

| https://wtg-study.tistory.com/92
| https://modoocode.com/132
| https://blockdmask.tistory.com/331

profile
아는만큼보인다.

0개의 댓글