Programming Language/C, C++

[C] 문자/문자열을 정수로 바꾸는 함수들

요호유후 2025. 6. 9. 18:47
반응형

 

숫자로 이루어진 문자/문자열을 정수형으로 변환하는 방법에 대해서 알아보자.

 

1. 문자 → 정수

💡 ASCII 코드 활용

문자는 ASCII 코드로 저장된다.
정수형으로 변환하려는 문자값에 - '0' 해주면 된다.

'0' = 48
'1' = 49
'2' = 50
'3' = 51
'4' = 52
'5' = 53
'6' = 54
'7' = 55
'8' = 56
'9' = 57

📌 방법은 한 자리 숫자 문자에서만 사용할 수 있다!

 

void main() {
    char ch = '3';
    int num = ch - '0' // '3' - '0' => 51 - 48 = 3
}

 

2. 문자열 → 정수

💡 함수 : atoi(), atol()

atoi : ASCII to Integer
가장 단순한 방법이다. 단, 문자열이 모두 숫자여야 한다. 
"1234abc" 와 같은 문자열의 경우에는 0을 반환하기에 예외 처리도 불가능하다.

⭐ 함수원형
int atoi(const char *str);
long int atol(const char *str);

⭐ 포함헤더
#include <stdlib.h>

 

#incldue <stdlib.h>

void main() {
    char *str = "1234";
    int num = atoi(str); // 결과 : 1234
}

 

 

💡 함수 : strtol()

atoi() 보다 안전한 방법으로 오류 검출이 가능하다.

⭐ 함수원형
long int strtol(const char *str, char **endptr, int base);
   * base : 진법 (10진수 : 10, 16진수 : 16, 자동 : 0)

⭐ 포함헤더
#include <stdlib.h>

 

#include <stdlib.h>

void main() {
    char *str = "1234";
    char *end;
    long num = strtol(str, &end, 10); // 10진수
    
    if(*end == '\0') printf("%ld\n", num);
    else printf("변환 실패");
}

 

 

 

반응형