コンパイルは通るのですがコアダンプとなってしまいます…
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
int main(int argc, char* argv[]){
FILE* fp;
char buffer[2048];
char kueri[256];
char* s;
char* delimiter = " .,();:"; //単語の区切れの定義
int i;
int flag = 0;
/*コマンドラインが正しく入力されているかの確認*/
if(argc < 3){
printf("error1\n");
exit(1);
}
/*入力されたクエリをkueriに格納する*/
strcpy(kueri,argv[1]);
/*英小文字を英大文字に変換する処理を\0まで繰り返す*/
s = kueri;
while(*s != '\0'){
*s = toupper(*s);
s++;
}
/*メインループ*/
// for(i = 2; i < argc; i++){
/*ファイルを開く*/
if((fp = fopen(argv[i], "r")) == NULL){
printf("error2");
exit(1);
}
while(fgets(buffer,sizeof(buffer),fp) != NULL){
/*最後に\0を格納する*/
buffer[strlen(buffer)-1] = '\0';
/*英小文字を英大文字に変換する処理を\0まで繰り返す*/
s = buffer;
while(*s != '\0'){
*s = toupper(*s);
s++;
}
/*strtokを用いて単語毎に区切っていく(1単語目)*/
s = strtok(buffer,delimiter);
if(strcmp(s,kueri) == 0){
printf("入力されたクエリを文書内に発見しました。\n");
printf("file name: %s\n",argv[i]);
flag = 1;
}else{
/*strtokを用いて単語毎に区切っていく(2単語目以降)*/
while((s = strtok(NULL, delimiter)) != NULL){
if(strcmp(s,kueri) == 0){
printf("入力されたクエリを文書内に発見しました。\n");
printf("file name: %s\n",argv[i]);
flag = 1;
}
}
}
}
fclose(fp);
// }
if(flag == 0){
printf("クエリを文書内に発見できませんでした。\n");
}
exit(0);
}