C语言问题,请帮忙解答一下,写出程序,再帮忙讲解一下,感激涕零~~~
文件mydoc.txt是一篇英文文档,编写分析此文档的c程序,将包含teacher或student关键词的段落单独摘录出来,存放到edu.txt文档中。...
文件mydoc.txt是一篇英文文档,编写分析此文档的c程序,将包含teacher或student关键词的段落单独摘录出来,存放到edu.txt文档中。
展开
1个回答
展开全部
/*文件mydoc.txt是一篇英文文档,
编写分析此文档的c程序,
将包含teacher或student关键词的段落
单独摘录出来,存放到edu.txt文档中。*/
#include<stdio.h>
#include<string.h>//字符串操作用的头文件
#include<windows.h>//为了使用exit()退出程序函数
void main(){
char st[]="student\0";
char te[]="teacher\0";
char mc[20]={0};//初始化字符串数组 (全部置为0)
int sn=0,tn=0;//计数
FILE *p1,*p2;//定义文件指针
if((p1=fopen("C:\\Users\\Administrator\\Desktop\\mydoc.txt","r"))==NULL){
printf("文件打开失败。");exit(-1);}
if((p2=fopen("C:\\Users\\Administrator\\Desktop\\edu.txt","w"))==NULL){
printf("文件打开失败。");exit(-1);}
do{fgets(mc,8,p1);//读取8-1个有效字符保存到mc
if(!strcmp(mc,st)){++sn;fputs(st,p2);fputc('\n',p2);printf("已找到");}
else if(!strcmp(mc,te)){++tn;fputs(te,p2);fputc('\n',p2);printf("已找到");}
else printf("寻找中");
printf(":%d %d||%s\n",sn,tn,mc);
}while(!feof(p1));
fflush(p1);
fclose(p1);fclose(p2);
printf("读取完毕,共有%d个teachar,%d个student\n",sn,tn);
printf("摘录文档edu.txt已存放至桌面!\n");
}
//测试用文档mydoc.txt:
/*sdsh
shsdhseh
hdfh
dfhrsh
dfhdfj
dfh
stu
dfj
student
dsgsd
h
teacher
sdgsdg
seg
ss
dsytu
fgjfgj
teacher
teacher
sgsdg
student
sdgdg
tae
teach
sdg
fdhdfdf
student*/
更多追问追答
追问
你好,如果是一段英文,如: I'm a student. I like playing football.
my English teacher is very nice.
I like English.
输出含有student 的段落,要一段全部输出。而且,对于fgets(mc,8,p1); 这一句,不能确保读到的一定是student,这样怎么解决呢?
追答
使用fgetc()函数 一次获取一个字符保存到数组(设置得足够大),遇到空格或逗号或句号则暂停
并与teacher和student进行strcmp比较,循环到文件尾。最后输出结果
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询