11720번 - 숫자의 합
출력은 다 되는데 왜 틀렷다고 나오는걸까요?
문자열 입력방식이 이상합니다
scanf("%s",&a); 이부분 잘못써서
scanf("%s",a); 로 바꿔서 다시 제출해봤는데 여전히 틀렷다고 합니다.
atoi는 문자열을 int로 바꿔주는 함수입니다
정확하진 않지만 atoi는 NULL로 종결되는 수식을 포함하는 문자열의 포인터를 받아서 작동하는데 문자열이 아닌 문자를 입력받아서 저렇게 바꿔버리면 동작이 이상해질거같은데요
char a2; 이 부분을
char *a2=NULL; 로 변경해주었더니 맞았다고 처리되었습니다.
말씀하신 atoi에 대해서는 조금 더 공부한 후에 다시 알아보도록 하겠습니다.
답변 감사합니다.
그것도 올바른 방법이 아닙니다. atoi는 문자열을 정수로 바꾸어주는 것이고, 문자열이란 char형이 연속으로 있다가 마지막에 널 문자 '\0'이 나타나는 형태를 말합니다. 널 문자가 없으면 atoi 함수는 문자열의 끝이 어딘지 알 수 없습니다.
하나의 문자를 그에 맞는 정수값으로 바꾸는 데에는 a[i-1] - '0' 으로 충분합니다.
atoi 에 대해 잘못 이해를 했던거 같습니다.
처음에 쓸때 atoi가 a 배열에 속하는 요소 각각 하나씩 바꿔준다고 생각했는데 다시 알아보니 그게 아니였군요.
좋은 답변 감사합니다.!
댓글을 작성하려면 로그인해야 합니다.
khs96p 5년 전
출력은 다 되는데 왜 틀렷다고 나오는걸까요?