2024年2月25日发(作者:边小之)
记事本代码
#include
#include
#include
typedef struct node{
char a[100]; //每行100字符
node * next; //关于此处next的作用还不清楚,但不可去掉
}node;
class notepad{
public:
notepad(){
i=1;
line=0;
}
~notepad(){}
void operator_interface();
void input();
void ct_input();
void delete1();
void copy();
void paste();
void open();
void save();
char * find();
void print();
char store[100]; //储存需复制内容
private:
char * ptr_array[100]; //指针数组,记录100行行指针
int linelen[100]; //最大100行
int line; //当前总行数
char d[30]; //记录操作数据
int k,l; //记录当前查找行il
int i; //文档录入初始标记
};
void notepad::operator_interface(){
cout<<"********************************************************"< cout<<"***0.继续录入文档"< cout<<"***1.输入文档内容"< cout<<"***2.删除某些内容"< cout<<"***3.复制某些内容"< cout<<"***4.粘贴某些内容"< cout<<"***5.打开文档内容"< cout<<"***6.是否保存文档"< cout<<"***7.获取操作帮助"< cout<<"***8.我要结束操作"< cout<<"********************************************************"< } void notepad::input(){ -99"< char e[10]; cin>>e; char *lin=e; if(*(lin+2)=='0'&&isdigit(*lin)&&isdigit(*(lin+1))){ line=(*lin-'0')*10+(*(lin+1)-'0'); if(line!=0){ cout<<"请输入各行内容"< while(i<=line){ cout<<"第"< node *p=new node; cin>>p->a; ptr_array[i]=p->a; linelen[i]=strlen(p->a); i++; } } else cout<<"你输入的行数有误"< } else cout<<"你输入的行数有误"< void notepad::ct_input(){ if(line!=0){ int i=line+1; cout<<"输入要录入的总行数,格式:01-99"< char e[10]; cin>>e; char *lin=e; if(*(lin+2)=='0'&&isdigit(*lin)&&isdigit(*(lin+1))){ line=line+(*lin-'0')*10+(*(lin+1)-'0'); if(line!=0){ cout<<"请输入各行内容"< while(i<=line){ cout<<"第"< node *p=new node; cin>>p->a; ptr_array[i]=p->a; linelen[i]=strlen(p->a); i++; } } else cout<<"你输入的行数有误"< } else cout<<"你输入的行数有误"< } else cout<<"当前文档并无内容,请先输入1录入文档"< } void notepad::print(){ cout< int j=1; cout<<"当前文档内容为:"< while(j<=line){ cout<<"第"< char *q=ptr_array[j]; while(*q!='0'){ cout<<*q; q++; } cout< j++; } cout< } char * notepad::find(){ //暂未解决跨行查找问题 k=1; cin>>d; l=strlen(d); char *n=d; int c=1; char *m=ptr_array[k]; while(k<=line){ if(*m=='0'){ k=k+1; if(k<=line)m=ptr_array[k]; } if(*m!='0'&&*m!=*n)m++; while(*n!='0'&&*m!='0'&&*m==*n){ m=m+1; n=n+1; c=c+1; } if(*n=='0'){ return m-c+1; } else { n=d; c=1; } } return NULL; } void notepad::delete1(){ char * dp1; char * dp2; cout<<"请输入要删除的文本前几位字符,注意区分"< dp1=find(); int l1=k; cout<<"请输入要删除的文本末几位字符,注意区分"< dp2=find(); int l2=k; if(dp1==NULL||dp2==NULL||l1>l2)cout<<"输入错误"< else{ dp2=dp2+l; if(l1==l2){ while(*dp2!='0'){ *dp1=*dp2; dp1++; dp2++; } *dp1='0'; linelen[l1]=strlen(ptr_array[l1]); } else { if(l1+1 for(int t1=l1+1,t2=l2;t2<=line;t1++,t2++)ptr_array[t1]=ptr_array[t2]; line=line-l2+l1+1; l2=l1+1; } *dp1='0'; char *dp21=ptr_array[l2]; while(*(dp2-1)!='0'){ *dp21=*dp2; dp21++; dp2++; } linelen[l1]=strlen(ptr_array[l1]); linelen[l2]=strlen(ptr_array[l2]); } if(linelen[l1]==0){ for(int v=l1;v<=line;v++)ptr_array[v]=ptr_array[v+1]; line--; } if(linelen[l2]==0){ for(int v=l2;v<=line;v++)ptr_array[v]=ptr_array[v+1]; line--; } } } void notepad::copy(){ char * cp1; char * cp2; cout<<"请输入要复制的文本前几位字符,注意区分"< cp1=find(); int l1=k; cout<<"请输入要复制的文本末几位字符,注意区分"< cp2=find(); int l2=k; char *pt=store; if(cp1!=NULL&&cp2!=NULL&&l1<=l2){ cp2=cp2+l; while(cp1!=cp2){ if(*cp1=='0'){ l1++; cp1=ptr_array[l1]; } else { *pt=*cp1; pt++; cp1++; } } *pt='0'; } else cout<<"输入错误"< void notepad::paste(){ cout<<"请输入要粘贴位置的前几位字符(在首字符后粘贴)"< char *pat=find(); if(pat!=NULL){ int choice2; cout<<"请选择要粘贴内容:1/从内存中0/我自己输入"< cin>>choice2; if(!choice2)cin>>store; char *ppt=store; for(char *pat1=pat;*(pat1+1)!='0';pat1++); //定位至末尾 int pl=strlen(store); *(pat1+pl+1)='0'; while(pat1!=pat){ //移位 *(pat1+pl)=*pat1; pat1--; } pat++; for(int u=1;u<=pl;u++){ *pat=*ppt; ppt++; pat++; } linelen[k]=linelen[k]+pl; } else cout<<"输入错误"< } void notepad::open(){ print(); } void notepad::save(){ cout<<"是否保存文件,1/是0/否"< char g[10]; int choice1; cin>>g; char *choi=g; if(*(choi+1)=='0'&&isdigit(*choi)){ choice1=*choi-'0'; if(choice1==1)cout<<"文件已保存"< else if(choice1==0){ for(int w=1;w<=line;w++){ //相当于析构函数的 作用 ptr_array[w]=NULL; linelen[w]=0; } line=0; } else cout<<"输入错误"< } else cout<<"输入错误"< void main(){ cout<<"欢迎使用本程序,您可以在要输入文档内容时通过切换输入法实现输入汉字,by hk"< notepad b; or_interface(); char f[10]; int choice; cin>>f; char *choic=f; if(*(choic+1)=='0'&&isdigit(*choic)){ //错误输入处理机制 choice=*choic-'0'; } else choice=9; while(choice!=8){ switch(choice){ case 0: _input(); break; case 1: (); break; case 2: 1(); (); break; case 3: { (); cout< char *p_t=; int fzcd=strlen(); cout<<"你所要复制的内容长度为"< cout<<"你所要复制的内容为"< while(*p_t!='0'){ cout<<*p_t; p_t++; } cout< } break; case 4: (); (); break; case 5: (); break; case 6: (); break; case 7: or_interface(); break; case 8: break; default: break; } if(choice==9||(choice>=0&&choice<=7)){ //输入错误时的操作及输入正确时 //的继续操作判断 if(choice==9)cout<<"你输入的操作有误,请重新输入,输入 7 获取操作帮助"< else cout<<"继续你的操作,输入 7 获取操作帮助"< cin>>f; choic=f; if(*(choic+1)=='0'&&isdigit(*choic)) //错误输入处理机 制 choice=*choic-'0'; else choice=9; } } cout<<"感谢您的使用"< } 2024年2月25日发(作者:边小之) 记事本代码 #include #include #include typedef struct node{ char a[100]; //每行100字符 node * next; //关于此处next的作用还不清楚,但不可去掉 }node; class notepad{ public: notepad(){ i=1; line=0; } ~notepad(){} void operator_interface(); void input(); void ct_input(); void delete1(); void copy(); void paste(); void open(); void save(); char * find(); void print(); char store[100]; //储存需复制内容 private: char * ptr_array[100]; //指针数组,记录100行行指针 int linelen[100]; //最大100行 int line; //当前总行数 char d[30]; //记录操作数据 int k,l; //记录当前查找行il int i; //文档录入初始标记 }; void notepad::operator_interface(){ cout<<"********************************************************"< cout<<"***0.继续录入文档"< cout<<"***1.输入文档内容"< cout<<"***2.删除某些内容"< cout<<"***3.复制某些内容"< cout<<"***4.粘贴某些内容"< cout<<"***5.打开文档内容"< cout<<"***6.是否保存文档"< cout<<"***7.获取操作帮助"< cout<<"***8.我要结束操作"< cout<<"********************************************************"< } void notepad::input(){ -99"< char e[10]; cin>>e; char *lin=e; if(*(lin+2)=='0'&&isdigit(*lin)&&isdigit(*(lin+1))){ line=(*lin-'0')*10+(*(lin+1)-'0'); if(line!=0){ cout<<"请输入各行内容"< while(i<=line){ cout<<"第"< node *p=new node; cin>>p->a; ptr_array[i]=p->a; linelen[i]=strlen(p->a); i++; } } else cout<<"你输入的行数有误"< } else cout<<"你输入的行数有误"< void notepad::ct_input(){ if(line!=0){ int i=line+1; cout<<"输入要录入的总行数,格式:01-99"< char e[10]; cin>>e; char *lin=e; if(*(lin+2)=='0'&&isdigit(*lin)&&isdigit(*(lin+1))){ line=line+(*lin-'0')*10+(*(lin+1)-'0'); if(line!=0){ cout<<"请输入各行内容"< while(i<=line){ cout<<"第"< node *p=new node; cin>>p->a; ptr_array[i]=p->a; linelen[i]=strlen(p->a); i++; } } else cout<<"你输入的行数有误"< } else cout<<"你输入的行数有误"< } else cout<<"当前文档并无内容,请先输入1录入文档"< } void notepad::print(){ cout< int j=1; cout<<"当前文档内容为:"< while(j<=line){ cout<<"第"< char *q=ptr_array[j]; while(*q!='0'){ cout<<*q; q++; } cout< j++; } cout< } char * notepad::find(){ //暂未解决跨行查找问题 k=1; cin>>d; l=strlen(d); char *n=d; int c=1; char *m=ptr_array[k]; while(k<=line){ if(*m=='0'){ k=k+1; if(k<=line)m=ptr_array[k]; } if(*m!='0'&&*m!=*n)m++; while(*n!='0'&&*m!='0'&&*m==*n){ m=m+1; n=n+1; c=c+1; } if(*n=='0'){ return m-c+1; } else { n=d; c=1; } } return NULL; } void notepad::delete1(){ char * dp1; char * dp2; cout<<"请输入要删除的文本前几位字符,注意区分"< dp1=find(); int l1=k; cout<<"请输入要删除的文本末几位字符,注意区分"< dp2=find(); int l2=k; if(dp1==NULL||dp2==NULL||l1>l2)cout<<"输入错误"< else{ dp2=dp2+l; if(l1==l2){ while(*dp2!='0'){ *dp1=*dp2; dp1++; dp2++; } *dp1='0'; linelen[l1]=strlen(ptr_array[l1]); } else { if(l1+1 for(int t1=l1+1,t2=l2;t2<=line;t1++,t2++)ptr_array[t1]=ptr_array[t2]; line=line-l2+l1+1; l2=l1+1; } *dp1='0'; char *dp21=ptr_array[l2]; while(*(dp2-1)!='0'){ *dp21=*dp2; dp21++; dp2++; } linelen[l1]=strlen(ptr_array[l1]); linelen[l2]=strlen(ptr_array[l2]); } if(linelen[l1]==0){ for(int v=l1;v<=line;v++)ptr_array[v]=ptr_array[v+1]; line--; } if(linelen[l2]==0){ for(int v=l2;v<=line;v++)ptr_array[v]=ptr_array[v+1]; line--; } } } void notepad::copy(){ char * cp1; char * cp2; cout<<"请输入要复制的文本前几位字符,注意区分"< cp1=find(); int l1=k; cout<<"请输入要复制的文本末几位字符,注意区分"< cp2=find(); int l2=k; char *pt=store; if(cp1!=NULL&&cp2!=NULL&&l1<=l2){ cp2=cp2+l; while(cp1!=cp2){ if(*cp1=='0'){ l1++; cp1=ptr_array[l1]; } else { *pt=*cp1; pt++; cp1++; } } *pt='0'; } else cout<<"输入错误"< void notepad::paste(){ cout<<"请输入要粘贴位置的前几位字符(在首字符后粘贴)"< char *pat=find(); if(pat!=NULL){ int choice2; cout<<"请选择要粘贴内容:1/从内存中0/我自己输入"< cin>>choice2; if(!choice2)cin>>store; char *ppt=store; for(char *pat1=pat;*(pat1+1)!='0';pat1++); //定位至末尾 int pl=strlen(store); *(pat1+pl+1)='0'; while(pat1!=pat){ //移位 *(pat1+pl)=*pat1; pat1--; } pat++; for(int u=1;u<=pl;u++){ *pat=*ppt; ppt++; pat++; } linelen[k]=linelen[k]+pl; } else cout<<"输入错误"< } void notepad::open(){ print(); } void notepad::save(){ cout<<"是否保存文件,1/是0/否"< char g[10]; int choice1; cin>>g; char *choi=g; if(*(choi+1)=='0'&&isdigit(*choi)){ choice1=*choi-'0'; if(choice1==1)cout<<"文件已保存"< else if(choice1==0){ for(int w=1;w<=line;w++){ //相当于析构函数的 作用 ptr_array[w]=NULL; linelen[w]=0; } line=0; } else cout<<"输入错误"< } else cout<<"输入错误"< void main(){ cout<<"欢迎使用本程序,您可以在要输入文档内容时通过切换输入法实现输入汉字,by hk"< notepad b; or_interface(); char f[10]; int choice; cin>>f; char *choic=f; if(*(choic+1)=='0'&&isdigit(*choic)){ //错误输入处理机制 choice=*choic-'0'; } else choice=9; while(choice!=8){ switch(choice){ case 0: _input(); break; case 1: (); break; case 2: 1(); (); break; case 3: { (); cout< char *p_t=; int fzcd=strlen(); cout<<"你所要复制的内容长度为"< cout<<"你所要复制的内容为"< while(*p_t!='0'){ cout<<*p_t; p_t++; } cout< } break; case 4: (); (); break; case 5: (); break; case 6: (); break; case 7: or_interface(); break; case 8: break; default: break; } if(choice==9||(choice>=0&&choice<=7)){ //输入错误时的操作及输入正确时 //的继续操作判断 if(choice==9)cout<<"你输入的操作有误,请重新输入,输入 7 获取操作帮助"< else cout<<"继续你的操作,输入 7 获取操作帮助"< cin>>f; choic=f; if(*(choic+1)=='0'&&isdigit(*choic)) //错误输入处理机 制 choice=*choic-'0'; else choice=9; } } cout<<"感谢您的使用"< }