#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
int main()
{
bool ok = true;
char text[31];
int length;
scanf("%[^\n]s", text);
length = strlen(text);
int begin = 0;
int end = length - 1;
while (begin < end)
{
if (text[begin] == ' ')
{
begin++;
continue;
}
else if (text[end] == ' ')
{
end--;
continue;
}
else if (text[begin] == text[end - begin])
{
ok = true;
begin++;
end--;
}
else if (text[begin] != text[end - begin])
{
ok = false;
break;
}
}
printf("%d", ok);
return 0;
}
이렇게하고 실행을 해보니,
값이 0이 나오길래
else if (text[begin] == text[end - begin])에 중단점을 설정해서
디버깅을 해보니,
text[1], text[10] 문자가 모두 'u'가 맞는데
else if 를 그냥 지나쳐서
아래 코드로 넘어가더라구요.
text[0], text[11] 문자는 같아서 코드가 실행되고,
text[1], text[10]은 문자가 같아도 코드가 실행되지 않을까요?
UNIT 6 디버거를 참조하시고,
조사식을 그림과 같이 추가하면 확인할 수 있습니다.
문자 'u'일 때 else if 안의 코드가 잘 실행됩니다.
테스트 케이스 입력
nurs es run
에 대해서 결과는 1이어야 하는데 문의한 코드는 0을 출력합니다.
디버거로 확인해보세요!