C 언어의 atoi() 함수는 문자열을 정수로 변환하는 표준 라이브러리 함수입니다. 이 함수는 문자열을 입력으로 받아 그에 해당하는 값을 정수(int) 타입으로 반환합니다.
문법(Syntax)
int atoi(const char *string)
매개변수 − atoi() 함수는 정수로 변환할 문자열 하나를 입력으로 받습니다.
반환 값 − 함수는 정수 값을 반환합니다. 유효한 숫자 문자열이라면 해당하는 정수 값을 반환하며, 유효하지 않은 경우 0을 반환합니다.
atoi() 함수의 구현 원리
직접 구현할 때의 핵심 로직은 다음과 같습니다.
- 문자열의 각 문자를 하나씩 읽으면서, 이전 결과값에 10을 곱한 뒤 현재 문자의 숫자 값을 더하여 정수를 만듭니다.
- 음수 처리를 위해 문자열의 첫 번째 문자가 '-'인지 검사하고, 음수라면 최종 결과에 -1을 곱합니다.
- 각 문자가 '0'부터 '9' 사이에 있는지 확인하여 유효한 숫자 문자열인지 검증합니다.
이제 위 해결 방식을 구현한 프로그램을 살펴보겠습니다.
예제 코드
#include <iostream>
using namespace std;
bool isNumericChar(char x) {
return (x >= '0' && x <= '9') ? true : false;
}
int myAtoi(char* str) {
if (*str == '\0')
return 0;
int result = 0;
int sign = 1;
int i = 0;
if (str[0] == '-') {
sign = -1;
i++;
}
for (; str[i] != '\0'; ++i) {
if (isNumericChar(str[i]) == false)
return 0;
result = result * 10 + str[i] - '0';
}
return sign * result;
}
int main() {
char string[] = "-32491841";
int intVal = myAtoi(string);
cout<<"The integer equivalent of the given string is "<<intVal;
return 0;
}
출력 결과
The integer equivalent of the given string is -32491841