45.8 질문
, 김 지원님이 작성#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h> //strlen, strcmp, strcpy
#include <stdlib.h> //malloc, free
int main() {
char text[1001];
int num = 0;
scanf("%[^\n]s", text);
char *tok = strtok(text, " .,");
while (tok != NULL) {
if (strcmp(tok, "the") == 0)
num += 1;
char *tok = strtok(NULL, " .,")
}
printf("%d\n", num);
return 0;
}
이 코드로 디버깅을 해보니 while 문에서 계속 반복되는 현상이 생겨 실행이 되지 않아 오류가 생깁니다, 왜 그런지 궁금합니다.
Re: 45.8 질문
, 도장_ 관리자님이 작성tok 변수가 NULL이 되어야 while 루프를 종료할 수 있습니다. 무한 루프가 된다는 것은 루프 종료 조건이 루프 안에서 만들어지지 않는다는 뜻입니다. 원인을 살펴보면 같은 이름의 변수가 2개 있습니다.
UNIT 45.2를 참고하세요.