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("변환 실패");
}
반응형