사용범위
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만 계산되어 결과가 나온다.
반응형
'C언어 > stdlib.h' 카테고리의 다른 글
[C언어] abs 함수 (정수의 절대값 구하기) (0) | 2023.03.29 |
---|---|
[C언어] realloc (heap 메모리 크기 변경) (0) | 2023.03.28 |
[C언어] free 함수 (heap 메모리 해제) (0) | 2023.03.26 |
[C언어] calloc 함수 (초기화된 heap 메모리 할당) (0) | 2023.03.02 |
[C언어] malloc 함수 (heap 메모리 할당) (1) | 2023.03.01 |