char 배열이 문자열이 되려면 그 끝을 알리는 널 문자가 있어야 합니다. strlen이 문자열의 길이를 구하는 원리는 그냥 가장 처음부터 한 글자씩 보면서 이 널 문자가 나타나는 지점을 찾을 뿐인데, 널 문자를 넣어준 적이 없으니 strlen은 배열의 길이를 넘어선 곳까지 계속 읽을 것이고 그로 인한 동작은 아무것도 보장할 수 없습니다. 심지어 어떤 환경에서는 정상적으로 동작하는데 다른 곳에서는 아닐 수도 있고 지금이 바로 그 상황입니다.
그래도 되지만, 애초에 alpha 배열에 strlen을 안 쓰면 됩니다. strlen은 문자열의 길이를 구하기 위한 함수인데, alpha 배열은 그냥 26의 고정된 칸을 가지는 문자 배열의 역할을 하기 위한 배열인데 이를 문자열로 볼 이유가 없습니다. 그냥 10번째 줄에 하신 것처럼 15번째 줄에도 strlen 대신 그냥 26이라고 쓰면 됩니다.
0728dong 2년 전
왜 틀렸는지 알려주세요...