사용자에게 파일이름을 입력받아서
그 파일을 연 다음 그 파일에 특정 단어가 몇 번째 줄에 몇 번 나오는지 출력하는 프로그램인데
도무지 왜 에러가 나는지를 못 찾겠네요.
#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 위치를 읽는 동안 액세스 위반이 발생했습니다.' 라는 에러가 나오네요 ㅜㅜ
포인터 p를잘몬썻네 주소값너으니까 될턱이잇나