사용자에게 파일이름을 입력받아서

그 파일을 연 다음 그 파일에 특정 단어가 몇 번째 줄에 몇 번 나오는지 출력하는 프로그램인데

도무지 왜 에러가 나는지를 못 찾겠네요.

 

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 1000//한줄이 1000자이하이고 1000줄 이하인 파일이라 가정함

int main(void)
{
 FILE *fp = NULL;//읽어올 파일을 지정
 int i;//지역변수 선언
 int line = 0, count = 0;
 char file_name[SIZE];
 char buffer[SIZE];
 char word[SIZE];
 char *p;
 
 printf("파일 이름을 입력하세요. : ");
 gets(file_name);
 fflush(stdin);
 printf("검색할 단어를 입력하세요. : ");
 gets(word);
 fflush(stdin);
 
 fp = fopen(file_name, "r");

 if(fp == NULL)
  printf("파일 열기 실패\n");
 //파일을 읽지못하면 실패했다고 말해줌.
 else
 {
  while(fgets(buffer, SIZE, fp))
  {
   line++;
   count = 0;
   if(strstr(buffer, word))
   {    
    p = strtok(buffer," ");
    if(strcmp(p, word)==0)
     count++;
    while(p != NULL)
    {
     p = strtok(NULL," ");
     if(strcmp(p, word)==0)
      count++;
    }

    printf("line : %d : %d times\n", line, count);
   }
  }
  
 }
 fclose(fp);//열었던 input 파일을 닫음

 
 system("PAUSE");
}

 

 

빨간색으로 줄친곳에서 strcmp를 안쳤을때는 원하는 값은 안나와도 에러는 안났는데

strcmp를 사용해서 비교한 다음에는

'0xC0000005: 0x00000000 위치를 읽는 동안 액세스 위반이 발생했습니다.' 라는 에러가 나오네요 ㅜㅜ