atoi는 문자열, 즉 char형 배열을 10진수로 바꿔주는 함수지,
char형 문자 하나를 10진수로 바꿔주는 함수가 아닙니다.
따라서 저런식으로 char형의 포인터를 넣어주시면 예상되지 않는 값을 반환할것입니다.
char형 '0' ~ '9'를 int형 0 ~ 9로 바꿔주는 방법은 간단합니다.
'0'에는 아스키코드가 48, '1'에는 49, .... '9'에는 57이 배당 되있습니다.
즉 '0'을 int형으로 출력하면 48, '1'은 49... 가 됩니다.
따라서 char형 변수에서 48을 빼주시면, '0'은 0, '1'은 1... 이 됩니다.
굳이 0의 아스키코드를 외우시지 않으셔도 다음과 같은 코드를 작성하시면 같은 효과를 얻을 수 있습니다.
junvneo 4년 전
숫자를 문자열로 받고
자릿수별로 한문자씩 숫자로 변환해서 더했습니다.
결과가 맞게 나오던데.. 틀렸다고 나오는 원인을 모르겠네요.