심사문제를 틀리면 제공해주는 추가적인 힌트로 인해 심사문제를 풀긴 했습니다.
그런데 추가적인 힌트 중에서
if (ptr != NULL && strcmp(ptr,"the")==0) {
count = countt + 1;
}
이 코드 부분중
ptr != NULL && strcmp(ptr,"the")==0
과
ptr != NULL && strcmp(ptr,"the")
의 차이로 인해 특정단어를 세는 count의 값이 확연히 달라집니다.
처음에는
ptr != NULL && strcmp(ptr,"the")
이렇게 진행했으나 다시 틀림으로써
ptr != NULL && strcmp(ptr,"the")==0 이러한 방식으로 고침으로써 해결했으나, 뒷부분에 ==0을 왜 붙여 주는지 이해가 가질 않아서 질문올립니다.
심사문제 해설의 다음 부분을 보세요.
여기서 주의할 점이 있는데 strtok 함수에서 반환된 잘린 문자열의 포인터 ptr은 NULL일 수도 있으므로 ptr이 NULL이 아닐 때만 strcmp 함수로 비교해야 합니다. 만약 strcmp 함수에 NULL이 들어가면 에러가 발생합니다.
strtok 함수로 자른 문자열을 가리키는 ptr은 NULL일 수 있습니다. 따라서 ptr이 NULL이 아닌 경우에만 strcmp 함수로 문자열 "the"가 있는지 확인해야 합니다.
이를 코드로 표현하면
ptr != NULL -> ptr이 NULL이 아닌 경우에
&& -> 만(그리고)
strcmp(ptr, "the") == 0 -> ptr이 "the"일 때
strcmp(ptr, "the") == 0 -> ptr이 "the"일 때
-----------------------------------------------------------------------------
이 부분은 즉, ptr에서 strcmp함수로 "the"가 있는지 확인했을때, "the"가 더이상 없을 경우를 말하는 거죠?