45.8 심사문제 질문있습니다!
, 민 현빈님이 작성#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int main(void)
{
char s[1001];
int count = 0;
scanf("%[^\n]s", s);
char* ptr = strtok(s, " .,");
while (ptr != NULL)
{
if (ptr != NULL && strcmp(ptr,"the") == 0)
count += 1;
ptr = strtok(NULL, " .,");
}
printf("%d", count);
return 0;
여기서 질문있습니다. 일단 제가 "the"만 구분해서 개수 출력하는건데
머리를 쥐어 짜내도 기억이 안나서 틀렸습니다만, strcmp 를 생각을 못하다니.... 그나저나 char* ptr = strtok(s, " .,"); 에서 문자열 자르는 기준을 마침표랑 쉼표로 잡아주는 이유가 그 두개를 기준으로 잘라서 문자열 "the"가 있는지 보고 그 다음으로 넘어가기 위함 이라고 생각해야 하나요???
}
Re: 45.8 심사문제 질문있습니다!
, 도장_ 관리자님이 작성심사문제 해설을 꼼꼼하게 읽어주세요.
char *ptr = strtok(s1, " .,");와 같이 " .,"를 지정하여 공백, 점, 콤마를 기준으로 문자열을 자릅니다(공백만 지정해서 잘라도 되지만 the.나 the,와 같이 점이나 콤마로 끝나는 경우를 대비해 점과 콤마도 잘라줍니다).
코드를 잘 보면 구분자 3개에 대해서 문자열을 자른다고 되어 있습니다.
char *ptr = strtok(s1, " .,");공백을 잘 못 볼 수도 있어서 해설에 '공백, 점, 콤마'라고도 설명되어 있습니다.
제대로 실행되는 코드는 아닌 것 같습니다. 포럼 상단 오른쪽에 45.8로 검색하면 이전 질문과 답변을 참조할 수 있습니다.