0728dong   2년 전

왜 틀렸는지 알려주세요...

0000000000   2년 전

길이가 100인 단어를 저장하기 위해서는 배열의 크기가 최소 101이어야 합니다.

0728dong   2년 전

101로 해도 되지 않는데요

djm03178   2년 전

alpha에는 널 문자가 들어있지 않으므로 strlen이 길이를 구할 수 없습니다.

0728dong   2년 전

근데 프로그램 돌려보면 아무 이상이 없던데요...? 널 문자가 들어있지 않았다는게 정확히 어떤 뜻인가요?

djm03178   2년 전

char 배열이 문자열이 되려면 그 끝을 알리는 널 문자가 있어야 합니다. strlen이 문자열의 길이를 구하는 원리는 그냥 가장 처음부터 한 글자씩 보면서 이 널 문자가 나타나는 지점을 찾을 뿐인데, 널 문자를 넣어준 적이 없으니 strlen은 배열의 길이를 넘어선 곳까지 계속 읽을 것이고 그로 인한 동작은 아무것도 보장할 수 없습니다. 심지어 어떤 환경에서는 정상적으로 동작하는데 다른 곳에서는 아닐 수도 있고 지금이 바로 그 상황입니다.

0728dong   2년 전

그러면 입력 문자 뒤에 널 문자를 넣으면 정답이 되나요?

djm03178   2년 전

그래도 되지만, 애초에 alpha 배열에 strlen을 안 쓰면 됩니다. strlen은 문자열의 길이를 구하기 위한 함수인데, alpha 배열은 그냥 26의 고정된 칸을 가지는 문자 배열의 역할을 하기 위한 배열인데 이를 문자열로 볼 이유가 없습니다. 그냥 10번째 줄에 하신 것처럼 15번째 줄에도 strlen 대신 그냥 26이라고 쓰면 됩니다.

널 문자를 넣으실 거라면 alpha 배열의 크기를 27칸 이상으로 늘려야 합니다.

0728dong   2년 전

감사합니다!!!

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