文本编辑器.docx
- 文档编号:15440130
- 上传时间:2023-07-04
- 格式:DOCX
- 页数:19
- 大小:17.36KB
文本编辑器.docx
《文本编辑器.docx》由会员分享,可在线阅读,更多相关《文本编辑器.docx(19页珍藏版)》请在冰点文库上搜索。
文本编辑器
#include"stdio.h"
#include"malloc.h"
#include"string.h"
#include"iostream.h"
#include"stdlib.h"
#include"conio.h"
#defineLink_Size100
intNUM,C,N;
typedefstructlist
{
chardata[80];
intlength;
structlist*next;
structlist*pre;
introw;
}LinkList;
LinkList*head;
voidHeadWord()//标题
{
//system("cls");
printf("\t\t****************************************************\n");
printf("\t\t****欢迎使用简单的文本编辑器****\n");
printf("\t\t****************************************************\n");
}
LinkList*CreatWord()//初始化
{
LinkList*temp;
charch;
inti,j;
head->next=(LinkList*)malloc(sizeof(LinkList));
head->pre=NULL;
temp=head->next;
temp->pre=NULL;
temp->length=0;
for(i=0;i<80;i++)
temp->data[i]='\0';//初始化
printf("开始创建文本,请输入文章(输入#号结束):
\n");
for(j=0;j { for(i=0;i<80;i++) { ch=getchar(); temp->data[i]=ch; temp->length++; if(ch=='#') { NUM=j; break; } } if(ch=='#') { temp->length=i; temp->next=NULL; break; } temp->next=(LinkList*)malloc(sizeof(LinkList)); temp->next->pre=temp; temp=temp->next; for(i=0;i<80;i++) temp->data[i]='\0'; } temp->row=NUM+1; system("cls"); returntemp; } voidPrintWord()//打印 { inti,j; LinkList*p; p=head->next; system("cls"); HeadWord(); printf("\n当前文章的内容是: "); for(j=0;j<=NUM&&p! =NULL;j++) { for(i=0;(i<80)&&(p->data[i])! ='#';i++) { printf("%c",p->data[i]); } p=p->next; } } voidCountWord()//数数 { LinkList*temp; charch; inti,j,t; intWORD=0,word=0,space=0,num=0,punct=0,sum=0; temp=head->next; for(j=0;j<=NUM;j++) { for(i=0;(i<80)&&(temp->data[i])! ='#';i++) { ch=temp->data[i]; if((ch>='A')&&(ch<='Z')) WORD++; elseif((ch>='a')&&(ch<='z')) word++; elseif((ch>='0')&&(ch<='9')) num++; elseif(ch=='') space++; elseif(ch==33||ch==34||ch==39||ch==44||ch==46||ch==58||ch==59||ch==63) {punct++;} } sum=WORD+word+num; } while (1) { printf("\n"); HeadWord(); printf("\t\t****************************************************\n"); printf("\t\t****文章内容统计菜单****\n"); printf("\t\t****************************************************\n"); printf("\t\t****1、文章中大写字母的个数****\n"); printf("\t\t****2、文章中小写字母的个数****\n"); printf("\t\t****3、文章中数字的个数****\n"); printf("\t\t****4、文章中标点符号的个数****\n"); printf("\t\t****5、文章中空格的个数****\n"); printf("\t\t****6、文章中所有字数****\n"); printf("\t\t****7、退出返回主菜单****\n"); printf("\t\t****8、直接退出本系统****\n"); printf("\t\t****************************************************\n"); printf("\t\t请选择需统计项目: "); scanf("%d",&t); switch(t) { case1: system("cls"); HeadWord(); printf("\n\t\t文章中大写字母的个数: %d\n",WORD); printf("按回车键继续·····"); getchar(); getchar(); system("cls"); break; case2: system("cls"); HeadWord(); printf("\n\t\t文章中小写字母的个数: %d\n",word); printf("按回车键继续·····"); getchar(); getchar(); system("cls"); break; case3: system("cls"); HeadWord(); printf("\n\t\t文章中数字的个数: %d\n",num); printf("按回车键继续·····"); getchar(); getchar(); system("cls"); break; case4: system("cls"); HeadWord(); printf("\n\t\t文章中标点符号的个数: %d\n",punct); printf("按回车键继续·····"); getchar(); getchar(); system("cls"); break; case5: system("cls");//清屏 HeadWord(); printf("\n\t\t文章中空格的个数: %d\n",space); printf("按回车键继续·····"); getchar(); getchar(); system("cls"); break; case6: system("cls"); HeadWord(); printf("\n\t\t文章中所有字数: %d\n",sum); printf("按回车键继续·····"); getchar(); getchar(); system("cls"); break; } if(t==7) {system("cls");break;} if(t==8)exit(0); } } voidSearchWord(char*str1,LinkList*temp)//查找 { charData[20]; inti,j,k=0,sum=0; intl=1; temp=head->next; strcpy(Data,str1); for(i=0;i<=NUM;i++) { for(j=0;j<80;j++) { if((temp->data[j])==Data[k])k++; elseif(Data[k]! ='\0') { j=j-k; k=0; } if(Data[k]=='\0') { sum++; j=j-k+1; printf("\t\t第%d次出现在第%d行第%d列\n",l,i+1,j+1); l++; k=0; continue;} } temp=temp->next; } printf("\t\t\t字符串总共出现次数为: %d\n\n",sum); C=sum; N=i*80+j; } voidDeleteWord(char*str2)//删除 {charData[20]; LinkList*temp,*term; inti,j,k,m,y,num; strcpy(Data,str2); for(y=0;y { num=80; k=0,m=0; temp=head; for(i=0;i<=NUM;i++) { term=temp; temp=temp->next; for(j=0;j<80;j++) { if((temp->data[j])==Data[k])k++; elseif(Data[k]! ='\0'){j=j-k;k=0;} if(Data[k]=='\0') { num=j; break; } } if(num<80)break; } for(;i<=NUM;i++) { for(;j<80;j++) { if(j+1 { term->data[80-k+num]=temp->data[j+1]; } else temp->data[j-k+1]=temp->data[j+1]; } term=temp; temp=temp->next; j=0; } } } LinkList*InsertWord(LinkList*temp)//插入 { charData[20]; inth,l; printf("\n\t\t请输入要插入的字符或字符串: "); getchar(); gets(Data); printf("\n\t\t当前文章内容为: "); PrintWord(); printf("\n\t\t请输入要插入的行: "); scanf("%d",&h); printf("\n\t\t请输入要插入的列: "); scanf("%d",&l); inti=(h-1)*80+l; LinkList*a; intn=strlen(Data); intm; intinsertRow=i/80+1; introw=temp->row; intj; if(insertRow==row) { for(m=temp->length-1;m>=(i%80)&&n>0;m--) temp->data[m+n]=temp->data[m]; for(m=(i%80),j=0;m { temp->data[m]=Data[j]; } } else { intr=0; for(intp=insertRow;p { if(p==insertRow) r=0; else r=n; for(m=temp->length-1-r;m>=0&&n>0;m--) temp->data[m+n]=temp->data[m]; a=temp; temp=temp->pre; temp->length=80; for(m=temp->length-n,j=0;m a->data[j]=temp->data[m]; } for(m=temp->length-n-1;m>=(i%80);m--) temp->data[m+n]=temp->data[m]; for(m=(i%80),j=0;m<(i%80)+n;m++,j++) temp->data[m]=Data[j]; } returntemp; } voidBmenu(LinkList*temp) { charstr1[20]; charstr2[20]; inta; do { HeadWord(); printf("\n\t\t****************************************************\n"); printf("\t\t****文章内容处理菜单****\n"); printf("\t\t****************************************************\n"); printf("\t\t****1、查找文章中的字符或者字符串****\n"); printf("\t\t****2、删除文章中的字符或者字符串****\n"); printf("\t\t****3、向文章中插入字符或者字符串****\n"); printf("\t\t****4、显示当前文章内容****\n"); printf("\t\t****5、返回主菜单****\n"); printf("\t\t****6、直接退出系统****\n"); printf("\t\t****************************************************\n"); printf("\t\t请选择: "); scanf("%d",&a); switch(a) { case1: system("cls"); HeadWord(); printf("\t\t\t请输入您需要查找的字符或字符串: "); getchar(); gets(str1); SearchWord(str1,temp); printf("按回车键继续·····"); getchar(); getchar(); system("cls"); break; case2: system("cls"); HeadWord(); printf("\t\t\t请输入您需要删除的字符或字符串: "); getchar(); gets(str2); SearchWord(str2,temp); DeleteWord(str2); printf("\t\t\t删除%s后的文章为: ",str2); PrintWord(); printf("按回车键继续·····"); getchar(); getchar(); system("cls"); break; case3: system("cls"); HeadWord(); InsertWord(temp); printf("\t\t\t插入字符或字符串后文章为: "); PrintWord(); printf("按回车键继续·····"); getchar(); getchar(); system("cls"); break; case4: system("cls"); HeadWord(); PrintWord(); printf("按回车键继续·····"); getchar(); getchar(); system("cls"); break; } if(a==5) { system("cls"); break; } if(a==6)exit(0); }while (1); } voidAboutWord() { printf("\n\n\t\t关于\n"); printf("\t\t****************************************************\n"); printf("\t\t**本系统由07网络工程 (2)班范亚运制作,谢谢使用**\n"); printf("\t\t****************************************************\n"); printf("\n"); } voidmenu(LinkList*temp) { intt; do{ HeadWord(); printf("\n"); printf("\t\t****************************************************\n"); printf("\t\t****主菜单****\n"); printf("\t\t****************************************************\n"); printf("\t\t****1、文章内容输入****\n"); printf("\t\t****2、显示当前文章内容****\n"); printf("\t\t****3、进入文章内容统计菜单****\n"); printf("\t\t****4、进入文章内容处理菜单****\n"); printf("\t\t****5、关于****\n"); printf("\t\t****6、退出文本编辑器****\n"); printf("\t\t****************************************************\n"); printf("\t\t****注: 第一次运行本程序时请选择1号功能****\n"); printf("\t\t****************************************************\n"); printf("\t\t请选择: "); scanf("%d",&t); if((t>6)&&(t<1)) { printf("对不起,无此功能,请输入正确的功能序号! \n"); } else switch(t) { case1: system("cls"); HeadWord(); temp=CreatWord(); break; case2: system("cls"); PrintWord(); printf("\n"); printf("按回车键继续·····"); getchar(); getchar(); system("cls"); break; case3: system("cls"); CountWord(); break; case4: system("cls"); Bmenu(temp); break; case5: system("cls"); HeadWord(); AboutWord(); printf("按回车键继续·····"); getchar(); getchar(); system("cls"); break; } if(t==6)break; }while (1); } voidmain() { head=(LinkList*)malloc(sizeof(LinkList)); LinkList*temp; menu(temp); system("pause"); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 文本 编辑器