行编辑器C语言Word格式文档下载.doc
《行编辑器C语言Word格式文档下载.doc》由会员分享,可在线阅读,更多相关《行编辑器C语言Word格式文档下载.doc(19页珍藏版)》请在冰点文库上搜索。
Linedit.txt"
"
a+"
);
readfile(lines,pfile);
fclose(pfile);
menu(lines);
}
intreadfile(char(*lines)[MAXC],FILE*pfile){
inti=0;
while(!
feof(pfile)){
fgets(lines[i],MAXC,pfile);
/*if(!
strstr(lines[i],"
\n"
))return1;
*/
i++;
return0;
1.主菜单函数
[流程图]:
显示一系列功能选项
输入n,判断n是否是0-6
根据n的值调用各功能模块函数
是
否
程序
voidmenu(char(*lines)[MAXC]){
intselection;
do{
system("
cls"
puts("
\t\t***********************MUNU******************\n\n"
\t\t1.Editnewline"
\t\t2.Replaceline"
\t\t3.Deleteline"
\t\t4.Searchline"
\t\t5.Modifydata"
\t\t6.Save"
\t\t0.Exit"
\n\n\t\t********************************************\n"
printf("
Pleaseselectanumber:
[]\b\b"
scanf("
%d"
&
selection);
if(selection<
0||selection>
6){
Invalidselection!
Pleasetryagain"
andselectanumber:
[]\b\b\n"
elsebreak;
}while(true);
switch(selection)
{
case1:
edit(lines);
break;
case5:
modify(lines);
case3:
mydelete(lines);
case4:
search(lines);
case2:
replace(lines);
case6:
savetofile(lines);
case0:
myexit(lines);
}while(true);
2.各功能模块设计
(1)编辑模块
/*****************************编辑*************************************/
voidedit(char(*lines)[MAXC])
inti,index;
/*system("
clrscr();
for(i=0,index=0;
i<
MAXL;
i++)
if(lines[i][0]!
=0)
{
index++;
printf("
%d:
%s"
index,lines[i]);
}
printf("
\n\nPleasetypeanewline:
fflush(stdin);
for(i=0;
{
if(lines[i][0]=='
\0'
)
{/*每行第一个字符作为标志位空行可写入*/
fgets(lines[i],MAXC,stdin);
return;
}
else
continue;
(2)替换模块
流程图
/******************************替换****************************************/
voidreplace(char(*lines)[MAXC])
inti;
intindline;
intj,k;
do
{
/*system("
*/
clrscr();
/*打印所有*/
for(i=0;
if(lines[i][0]!
printf("
i+1,lines[i]);
printf("
\n\nWhichlinedoyouprefertoreplace?
(Toquitpleaseinput0)[]\b\b"
scanf("
indline);
if(indline==0)
else
{
for(j=0,k=0;
j<
j++)
{
if(lines[j][0]!
=0)k++;
if(k==indline)
{
printf("
\n\nThelinetobereplacedis:
\n%s"
lines[j]);
Pleasetypeyournewline:
memset(lines[j],0,MAXC);
fflush(stdin);
fgets(lines[j],MAXC,stdin);
break;
}
}
}
}while(true);
(3)删除模块
删除即在查找到某行的基础上再删掉,其具体流程图可参照查找的流程图
查找行
删除行
/*******************************删除***************************************/
voidmydelete(char(*lines)[MAXC])
inti,index;
intindline;
intj,k;
do
{
for(i=0,index=0;
{
index++;
printf("
}
printf("
\n\nWhichlinedoyouprefertodelete?
scanf("
if(indline==0)return;
else
if(lines[j][0]!
if(k==indline)
{
printf("
Thelinetobedeletedis:
\n%s\n"
memset(lines[j],0,MAXC);
system("
pause"
break;
}
}while(true);
(4)查找模块
/**************************查找****************************************/
voidsearch(char(*lines)[MAXC])
\n\nWhichlinedoyouwanttosearch?
Thelinetobesearchedis:
(5)修改模块
删除模块的流程图也是在查找模块的基础上稍加改动,在此不再赘述
其流程图可简单写为
修改行
/******************************修改**********************************/
/*在sSrc中用sReplaceStr替换sMatchStr*/
intmodifystr(char*sSrc,char*sMatchStr,char*sReplaceStr)
intStringLen;
charcaNewString[MAXC];
char*FindPos=strstr(sSrc,sMatchStr);
if((!
FindPos)||(!
sMatchStr))
return-1;
while(FindPos)
{
memset(caNewString,0,sizeof(caNewString));
StringLen=FindPos-sSrc;
strncpy(caNewString,sSrc,StringLen);
strcat(caNewString,sReplaceStr);
strcat(caNewString,FindPos+strlen(sMatchStr));
strcpy(sSrc,caNewString);
FindPos=strstr(sSrc,sMatchStr);
return0;
voidmodify(char(*lines)[MAXC])
{
inti,indline;
charbuf[MAXC];
intk;
intj;
char*token=0;
charsearch[MAXC],replace[MAXC];
do
/*system("
clrscr();
for(i=0;
if(lines[i][0]!
='
)
\n\nWhichlinedoyouprefertomodify?
printf("
\n\nInputthesearchstringandthereplace"
(Toquitpleaseinputq):
"
memset(buf,0,MAXC);
fflush(stdin);
fgets(buf,MAXC,stdin);
k=strlen(buf)-1;
if(buf[k]=='
\n'
)buf[k]='
;
if(*buf=='
q'
&
*(buf+1)=='
)return;
memset(search,0,MAXC);
memset(replace,0,MAXC);
token=strtok(buf,"
"
strcpy(search,token);
token=strtok(NULL,"
strcpy(replace,token);
modifystr(lines[j],search,replace);
}while(true);
}
(6)保存模块
voidsavetofile(char(*lines)[MAXC])
FILE*pfile;
inti;
w+"
if(lines[i][0]!
fputs(lines[i],pfile);
\nThelineshasbeensaved.\n"
system("
(7)退出模块
提示是否保存
是否保存
voidmyexit(char(*lines)[MAXC])
charc;
Savethelinestothefile?
(y/n)"
c=getchar();
if(c=='
n'
)exit
(1);
savetofile(lines);
exit
(1);
1.5上机操作
1.主菜单函数
1.编辑模块
3.替换模块
4查找模块.
5.修改模块
6.删除模块
7.保存模块
8.退出模块
1.6个人心得
总结:
经过一周的C语言程序设计实习我有了很深刻的认识和了解。
上个学期,我们学习了C语言程序设计知识,初步了解了一些计算机语言方面的知识。
借这次上机实习之际我又把上学期的课程重新复习了一遍,收获颇丰,以前理论上的很多没能弄懂的一些问题现在已有了一些认识,以前不太明白的问题现在也基本清楚了,刚开始时研究完题目时不知道从哪里入手,经过把课本和指导书反复地翻阅,加上请教同学,总算编译出来了比较完整的程序,可是却不能很好地运行,经过多次认真地检查修改,一遍一遍地试验,最终顺利地完成了程序编成。
学习C语言就是为了运用它帮助我们解决一些日常生活中遇到的问题,而此次的课程设计就为我们提供了检验自己能力的一次机会,也给了我们一次弥补以前缺陷的机会。
所以,以后在学习过程中,我会更加重视实践操作,学好计算机这门知识。