|
失礼しました。「文」でしたね。
文の長さが長い場合を考えて、reallocでメモリを増やしながら'.'が来るまで
読み込むようにしました。'.'で終わらない場合は、文とは見なしません。
また、改行は含めませんでした。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define STR 256
int main(void)
{
FILE *fp_input;
FILE *fp_output;
char *sentence = NULL;
char mojiretu[16];
int i = 0, c;
printf("検索する文字列="); //文字列の入力
scanf("%15s", mojiretu);
if ((fp_input = fopen("input.txt","r")) == NULL) { //ファイルのオープン
printf("ファイルが開けません\n");
return(1);
}
if ((fp_output = fopen("output.txt","w")) == NULL) { //ファイルのオープン
printf("ファイルが開けません\n");
return(1);
}
while ( (c=fgetc(fp_input)) != EOF) {
if ((i % STR) == 0)
sentence = (char *) realloc(sentence, STR*(i/STR+1));
if (c != '\n') sentence[i++] = c;
if (c == '.') {
sentence[i] = '\0';
if(strstr(sentence,mojiretu) != NULL) {
fprintf(fp_output, "%s\n", sentence);
}
free(sentence);
sentence = NULL;
i = 0;
}
}
free(sentence);
fclose(fp_input);
fclose(fp_output);
return(0);
}
|