使用目前所学C语言,制作一个小程序,具有打开一个文本文件(.txt)且找出含有某个词的句子并保存为一个新的文本文件等功能(仅支持英文)。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define exit_failure 1
#define file_name 100
int main(void)
{
int i=0,m,n,k;
char file_name1[file_name],file_name2[file_name];
char ch;
char str[100] = {'\0'};
char substr[100] = {'\0'};;
FILE *fp1,*fp2;
printf("请输入需要查找的文件路径:");
gets(file_name1);
printf("请输入需要查找的单词:");
gets(substr);
printf("保存到哪里(文件路径):");
gets(file_name2);
if((fp1=fopen(file_name1,"r+"))==NULL)
{
puts("打开文件1失败");
system("pause");
exit(exit_failure);
}
fp2 = fopen(file_name2, "a+");
//如果文件不存在
if (fp2 == NULL)
{
puts("打开文件2失败");
fp2 = fopen(file_name2, "a+");
}
fclose(fp2);
do
{
m=0;n=0;k=n;
memset(str, 0x00, sizeof (char) * 100);
for(i=0;;i++){
ch=fgetc(fp1);
if (ch=='.'||ch=='?'||ch=='!')
{
str[i] = ch;
while(m<strlen(str)&&n<strlen(substr))
{
if(str[m]==substr[n])
{++m;++n;}
else
{n=0;m=++k;}
}
if(n>=strlen(substr))
{
fp2 = fopen(file_name2, "a+");
puts(str);
fprintf(fp2,"%s\n",str);
fclose(fp2);
}
break;
}
else{
str[i] = ch;
}
fseek(fp1,0l,SEEK_CUR);
}
}
while (ch!=EOF);
fclose(fp1);
fclose(fp2);
system("pause");
return 0;
}