45.8 심사문제 질문의 답변이 안달려서 다시 올립니다!
, 갓 디비님이 작성#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int main() {
char story[1001];
scanf("%[^\n]s", story);
char* cut = strtok(story, ".,");
int count = 0;
if (strcmp(cut,"the") == 0)
count++;
while (cut != NULL) {
cut = strtok(NULL, ".,");
if (cut != NULL && strcmp(cut, "the") == 0)
count++;
}
printf("%d", count);
return 0;
}
이런식으로 코딩을 해보았는데 오류는 나지 않지만 원하는 결과값이 나오지않습니다. 무엇을 잘못한건가요?!?
Re: 45.8 심사문제 질문의 답변이 안달려서 다시 올립니다!
, 도장_ 관리자님이 작성UNIT 6을 참조해서 count++ 부분에 중단점을 설정하고 디버깅 모드로 실행해보면 count++이 한 번도 실행되지 않습니다.
문법 오류는 없지만, 코드의 로직이 틀렸습니다.
UNIT 45.1의 예제를 보면 문자열을 단어로 자르기 위해 공백을 사용했고, 문의한 코드에서는 공백은 구분자로 지정하지 않았습니다. ".,"만 지정했으니까 구분자는 . 또는 , 이라는 것이죠.
따라서 코드는 작성자가 작성한 로직대로 충실하게 동작한 것이고, 공백을 기준으로 단어를 나누지 않으니 count++이 한 번도 실행되지 않는 것입니다.