junvneo   2년 전

숫자를 문자열로 받고

자릿수별로 한문자씩 숫자로 변환해서 더했습니다.


결과가 맞게 나오던데.. 틀렸다고 나오는 원인을 모르겠네요.

Green55   2년 전

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의 아스키코드를 외우시지 않으셔도 다음과 같은 코드를 작성하시면 같은 효과를 얻을 수 있습니다.

댓글을 작성하려면 로그인해야 합니다.