getline 함수에 문제가 있습니다.
for (i = 0; i < lim - 1 && (c = getchar()) != EOF && c!='\n' ; ++i)
s[i] = c;
s[i] = c;
++i;
이 조건으로 line을 받게 되면 2가지 문제점이 발생하게 됩니다.
1. EOF를 받고 반복문을 빠져나와서 다시 배열에 넣기 때문에 문자열에 EOF값이 들어오게 됩니다. EOF는 문자열에 넣기 위한 값이 아닙니다.
2. \n이 문자열에 들어가게 됩니다.
\n이 문자열에 들어가거 되면 아래와 같은 문제가 초래될 수 있습니다.
ABCDE\n
ZYX\n
이 예제의 정답은 -1이 맞겠죠. 하지만 문자열에서 \n값이 들어가게 되면 \n이 일치하는지도 판단하게 되기 때문에 어떤 문장이 들어와도 절대 -1은 나올 수가 없을 것입니다.