行编辑器C语言Word文档格式.doc
《行编辑器C语言Word文档格式.doc》由会员分享,可在线阅读,更多相关《行编辑器C语言Word文档格式.doc(19页珍藏版)》请在冰豆网上搜索。
1.4.1主函数
为了各模块的独立性,主函数一般设计得比较简单,本系统主要用主函数打开上次保存的数据和进入主菜单函数
[
打开上次保存文件
流程图]:
进入主菜单函数
[程序]:
/*********************************主函数**************************************/
main()
{FILE*pfile;
pfile=fopen("
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?
indlin