심사문제 45.8
, 최 상진님이 작성#define _CRT_SECURE_NO_WARNINGS
#include <string.h>
#include <stdio.h>
int main()
{
char str[1001];
scanf("[^\n]%s", str);
int cnt = 0;
char* ptr = strtok(str, " .,");
while (ptr != NULL)
{
ptr = strtok(NULL, " .,");
if (ptr != NULL && strcmp(ptr, "the") == 0) {
cnt++;
}
}
printf("%d", cnt);
return 0;
}
제가 심사문제 힌트대로 하였는데 답이 안나와서 질문 드립니다.
제가 무었을 놓쳤는지 잘 모르겠습니다. printf<- 이위치가 잘 못되었는지 아니면 if 나 while문 안에 더 넣을 코드가 있는데 제가 놓친 건가요??
Re: 심사문제 45.8
, 도장_ 관리자님이 작성일단, 문의한 코드를 실행하고, 예시 입력을 넣은 다음에 입력이 제대로 되었나 출력을 해보면...
입력이 제대로 되지 않고 쓰레기 값만 출력되는 것을 알 수 있습니다.
문제를 잘 읽어보시면
scanf에서 공백을 포함한 문자열을 입력받으려면 서식 지정자로 "%[^\n]s"를 사용하면 됩니다.
문의한 코드를 보면
scanf("[^\n]%s", str);
차이점을 잘 보세요.
문제를 꼼꼼하게 읽고, 해설도 꼼꼼하게 읽으세요.
독해가 잘못되면 문제 자체를 오해하니 풀 수 없습니다.