C언어/stdlib.h

[C언어] atoi 함수 (문자열을 숫자로 변환)

아무일도없었다 2023. 4. 2. 23:08

사용범위

Windows, Unix 등 모든 OS에서 사용가능한 표준 API 함수

기능

C언어 표준 함수로 문자열을 숫자로 변환한다.

헤더

#include <stdlib.h>

※ 함수 사용 시 stdlib.h 파일을 include 하지 않는다면 컴파일 시 error 발생 ※


함수

int atoi(const char *str);

파라미터

  • const char *str
    • 숫자로 변환할 문자열을 입력한다.

반환값

성공시   문자열이 표현하는 숫자를 int형 정수 값으로 반환한다.
실패시   0을 반환한다. 

잡학지식

atoi는 실무에서도 자주 사용하는 함수로 string을 int로 변환하는데 사용한다.

 

int형의 범위를 반드시 인지하고 사용하는 것이 좋으며 overflow 혹은 underflow 에 대한 예외를 반드시 확인해야 한다.

 

비슷한 함수로 itoa 가 있으며 이는 atoi 와는 반대로 int 정수형을 string으로 변환해 주는 함수인데, 표준함수가 아니므로 프로그램을 배포하는 환경에서 사용가능한지 반드시 확인해야 한다.


 

<소스 코드>

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

int main() {
    char *str1 = "12345";
    char *str2 = "12345.6789";
    char *str3 = "-12345";
    char *overflow = "9876543210";
    char *not_number = "Hello_Atoi";

    printf("str1[%s] atoi[%d]\n", str1, atoi(str1));
    printf("str2[%s] atoi[%d]\n", str2, atoi(str2));
    printf("str3[%s] atoi[%d]\n", str3, atoi(str3));
    printf("overflow[%s] atoi[%d]\n", overflow, atoi(overflow));
    printf("not_number[%s] atoi[%d]\n", not_number, atoi(not_number));

    return 0;
}

 

※ 실행 결과

str1[12345] atoi[12345]
str2[12345.6789] atoi[12345]
str3[-12345] atoi[-12345]
overflow[9876543210] atoi[1286608618]
not_number[Hello_Atoi] atoi[0]

 

overflow의 경우 하위 4byte만 계산되어 결과가 나온다.

overflow 결과 확인

 

반응형