45.8 심사문제
, 박서연[ 학부휴학 / 전기전자공학부 ]님이 작성#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int main()
{
char s1[61];
int num = 0;
scanf("%[^\n]s", s1);
char *ptr = strtok(s1, " ,.");
while (ptr != NULL)
{
if (ptr != NULL && strcmp(ptr, "the") == 0)
num++;
ptr = strtok(NULL, " ,.");
}
printf("%d", num);
return 0;
}
이렇게 작성했는데 어딜 고쳐야할지 모르겠네요ㅠㅠ
Re: 45.8 심사문제
, 도장_ 관리자님이 작성문제의 요구사항을 정확하게 파악해야 합니다.
먼저 이 문제는 길이 1,000이하의 문자열이 입력된다고 되어 있습니다.
따라서 1,000문자를 저장할 수 있는 배열이 필요합니다.
문자열의 끝에는 널 문자가 포함되기 때문에 추가로 1바이트가 필요합니다.
총 1,001문자를 저장할 수 있어야 합니다.
char s1[1001];
처럼 긴 배열이 필요합니다.
예제 입력 문자열이 536자이므로 널 문자 1바이트를 포함해서 최소 537바이트가 필요한데 81로 배열을 선언했으면 80자만 저장됩니다. 그래서 오류가 발생하고 제대로 실행되지 않습니다.