1、简单的行编辑器源程序 SANY GROUP system office room 【SANYUA16H-SANYHUASANYUA8Q8-SANYUA1688】简单的行编辑器源程序#include #include #include #define MAXL 100 /*最大行数*/#define MAXC 80 /*每行最大字符数*/#define true 1char linesMAXLMAXC=0;void edit(char (*lines)MAXC);void modify(char (*lines)MAXC);void mydelete(char (*lines)MAXC);voi
2、d search(char (*lines)MAXC);void replace(char (*lines)MAXC);void savetofile(char (*lines)MAXC);void myexit(char (*lines)MAXC);void menu(char (*lines)MAXC)int selection;dosystem(cls);puts(tt*MUNU*nn);puts(tt1.Edit new line);puts(tt2.Replace line);puts(tt3.Delete line);puts(tt4.Search line);puts(tt5.M
3、odify data);puts(tt6.Save);puts(tt0.Exit);puts(nntt*n);printf(Please select a number: bb);doscanf(%d,&selection);if(selection6) printf(Invalid selection!Please try again );printf(and select a number:bbn);else break;while(true);switch(selection) case 1:edit(lines);break;case 5:modify(lines);break;cas
4、e 3:mydelete(lines);break;case 4:search(lines);break;case 2:replace(lines);break;case 6:savetofile(lines);break;case 0:myexit(lines); while(true);int readfile(char (*lines)MAXC,FILE *pfile) int i=0;while(!feof(pfile)fgets(linesi,MAXC,pfile); /*if(!strstr(linesi,n) return 1;*/i ;return 0;/*主函数*/main(
5、) FILE *pfile; pfile=fopen(Linedit.txt,a ); readfile(lines,pfile); fclose(pfile); menu(lines);/*编辑*/void edit(char (*lines)MAXC) int i,index; /*system(cls);*/ clrscr(); for(i=0,index=0;iMAXL;i ) if(linesi0!=0) index ; printf(%d: %s,index,linesi); printf(nnPlease type a new line:n); fflush(stdin); fo
6、r(i=0;iMAXL;i ) if(linesi0=0) /*每行第一个字符作为标志位 空行可写入*/ fgets(linesi,MAXC,stdin); return; else continue; /*替换*/void replace(char (*lines)MAXC) int i; int indline; int j,k; do /*system(cls); */ clrscr(); /*打印所有 */ for(i=0;iMAXL;i ) if(linesi0!=0) printf(%d: %s,i 1,linesi); printf(nnWhich line do you pre
7、fer to replace?(To quit please input 0) bb); scanf(%d,&indline); if(indline=0) return; else for(j=0,k=0;jMAXL;j ) if(linesj0!=0) k ; if(k=indline) printf(nnThe line to be replaced is: n%s,linesj); printf(Please type your new line:n); memset(linesj,0,MAXC); fflush(stdin); fgets(linesj, MAXC, stdin);
8、break; while(true); /*删除*/void mydelete(char (*lines)MAXC) int i,index; int indline; int j,k; do /*system(cls);*/ clrscr(); for(i=0,index=0;iMAXL;i ) if(linesi0!=0) index ; printf(%d: %s,index,linesi); printf(nnWhich line do you prefer to delete?(To quit please input 0) bb); scanf(%d,&indline); if(i
9、ndline=0)return; else for(j=0,k=0;jMAXL;j ) if(linesj0!=0) k ; if(k=indline) printf(The line to be deleted is: n%sn,linesj); memset(linesj,0,MAXC); system(pause); break; while(true);/*查找*/void search(char (*lines)MAXC) int i,index; int indline; int j,k; do /*system(cls);*/ clrscr(); for(i=0,index=0;
10、iMAXL;i ) if(linesi0!=0) index ; printf(%d: %s,index,linesi); printf(nnWhich line do you want to search?(To quit please input 0) bb); scanf(%d,&indline); if(indline=0)return; else for(j=0,k=0;jMAXL;j ) if(linesj0!=0) k ; if(k=indline) printf(The line to be searched is: n%sn,linesj); system(pause); b
11、reak; while(true);/*修改*/*在sSrc中用sReplaceStr替换sMatchStr */int modifystr(char *sSrc,char *sMatchStr,char *sReplaceStr) int StringLen; char caNewStringMAXC; char *FindPos = strstr(sSrc,sMatchStr); if(!FindPos)|(!sMatchStr) return -1; while(FindPos) memset(caNewString,0,sizeof(caNewString); StringLen=Fi
12、ndPos-sSrc; strncpy(caNewString,sSrc,StringLen); strcat(caNewString,sReplaceStr); strcat(caNewString,FindPos strlen(sMatchStr); strcpy(sSrc,caNewString); FindPos = strstr(sSrc,sMatchStr); return 0;void modify(char (*lines)MAXC) int i,indline; char bufMAXC; int k; int j; char* token=0; char searchMAX
13、C,replaceMAXC; do /*system(cls); */ clrscr(); for(i=0;iMAXL;i ) if(linesi0!=0) printf(%d: %s,i 1,linesi); printf(nnWhich line do you prefer to modify?(To quit please input 0) bb); scanf(%d,&indline); if(indline=0) return; else for(j=0,k=0;jMAXL;j ) if(linesj0!=0) k ; if(k=indline) printf(nnThe line
14、to be replaced is: n%s,linesj); printf(nnInput the search string and the replace );printf(To quit please input q):); memset(buf,0,MAXC); fflush(stdin); fgets(buf, MAXC, stdin); k= strlen(buf)-1; if(bufk=n) bufk=0; if(*buf=q&*(buf 1)=0) return; memset(search,0,MAXC); memset(replace,0,MAXC); token =st
15、rtok(buf, ); strcpy(search,token); token =strtok(NULL, ); strcpy(replace,token); modifystr(linesj,search,replace); break; while(true); void savetofile(char (*lines)MAXC) FILE *pfile; int i; pfile=fopen(Linedit.txt,w ); for(i=0;iMAXL;i ) if(linesi0!=0) fputs(linesi,pfile); fclose(pfile); printf(nThe lines has been saved.n); system(pause);void myexit(char (*lines)MAXC) char c; printf(Save the lines to the file?(y/n); fflush(stdin); c=getchar(); if(c=n) exit(1); savetofile(lines); exit(1);