-
大小: 1.1MB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2023-10-25
- 語言: 其他
- 標(biāo)簽: 數(shù)據(jù)結(jié)構(gòu)??課程設(shè)計(jì)??
資源簡介
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)之簡單的文本編輯器,完全自創(chuàng)!!

代碼片段和文件信息
#include?“stdio.h“
#include?“malloc.h“
#include?“string.h“
#include?“stdlib.h“
#include?“conio.h“
#include?“menu.h“
#include?“LineList.h“
#include?“RowList.h“
#define?Lower?((p->L[i]>=‘a(chǎn)‘?&&?p->L[i]<=‘z‘)?||?(p->L[i-j]>=‘a(chǎn)‘?&&?p->L[i-j]<=‘z‘))
#define?Upper?((p->L[i]>=‘A‘?&&?p->L[i]<=‘Z‘)?||?(p->L[i-j]>=‘A‘?&&?p->L[i-j]<=‘Z‘))
#define?Num?((p->L[i]>=‘0‘?&&?p->L[i]<=‘9‘)?||?(p->L[i-j]>=‘0‘?&&?p->L[i-j]<=‘9‘))
char?str[MAXSIZE];
/******************************************************************************************************/
void?print_Line_Num(int?j)
{//在輸出文本時(shí)在每行的開頭輸出行號(hào)
if(j<10)
printf(“?%d:?“j);
else?if(j>9?&&?j<100)
printf(“%d:?“j);
else
printf(“%d:“j);
}
/******************************************************************************************************/
void?print_doc(RowList?R)
{//在屏幕上打印出文本
int?klen;
LList?p=R.head;
while(p!=R.tail?||?k {
p=p->next;
k=1;
len=Line_Len(p->L);
print_Line_Num(p->LNum);
for(k;k<=len;k++)
printf(“%c“p->L[k]);
}
}
/******************************************************************************************************/
int?insertdoc(char?str[]RowList?&R)
{//導(dǎo)入現(xiàn)有的文本,并創(chuàng)建一個(gè)文本鏈表
int?i=1j=0flag;
LType?L;//每行行序列的數(shù)據(jù)類型L
FILE?*fp;
char?filename[20];
if(R.head->next!=NULL)//若R.head->next現(xiàn)在不為空先釋放空間
{
free(R.head);
InitRowList(R);//初始化文本串鏈表
}
while(1)
{
printf(“請(qǐng)輸入要插入的文件名:“);
scanf(“%s“filename);
getchar();
if((fp=fopen(filename“rb“))==NULL)
printf(“\n\t\t\t不存在該文件!\n“);
else?break;
}
while(!feof(fp))
{
flag=MAXSIZE;
for(i=1;i<=flag?&&?!feof(fp);i++)//flag為每行最大的輸出字符數(shù)
{
str[i]=fgetc(fp);
if(str[i]==‘\r‘)
{//這是遇到回車字符時(shí)的處理,每個(gè)回車字符包含‘\r‘和‘\n‘兩個(gè)字符
str[i++]=fgetc(fp);//str[i]賦值為‘\n‘
break;
}
else?if(str[i]==-1)//當(dāng)?shù)竭_(dá)文件末尾時(shí)的處理(由于上面的處理會(huì)影響feof(fp)的值,使其不能正確確定文件末尾
break;
else?if(str[i]==‘\t‘)//碰到TAB鍵的處理,flag的值減6
flag-=6;
}
CreatRowList(RLstri++j);//創(chuàng)建一個(gè)文本串鏈表
}
printf(“\n\t\t\t???*********************“);
printf(“\n\t\t\t???*文?本?導(dǎo)?入?成?功?!*“);
printf(“\n\t\t\t???*********************\n“);
print_doc(R);
printf(“\n“);
fclose(fp);
return?OK;
}
/*****************************************************************************************************/
void?Get_next(WString?WStrint?next[])//KMP匹配算法中的得到next值
{
int?i=1j=0;
next[1]=0;
while(i<(int)WStr[0])
{
if(j==0?||?WStr[i]==WStr[j])
{
++i;
++j;
if(WStr[i]!=WStr[j])
next[i]=j;
else
next[i]=next[j];
}
else
j=next[j];
}
}
/*****************************************************************************************************/
int?KMP_Index(WString?WStrRowList?Rint?pre[]int?last[])
{//KMP匹配算法將單詞的第一個(gè)字母和最后一個(gè)字母的位置分別賦給pre[]和post[]
int?next[30];
int?i=1j=1;
LList?p=R.head->next;//p指向文本串中的第一行
Get_next(WStrnext);
while(1)//一行一行的進(jìn)行查找
{
while(i<=(int)p->L[0]?&&?j<=(int)WStr[0])//KMP匹配算法的核心部分
{
if(p
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件?????488960??2011-04-22?13:39??文本編輯器\數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告.doc
?????文件??????20676??2011-04-22?13:49??文本編輯器\文本編輯器\Debug\BuildLog.htm
?????文件?????????65??2011-04-22?13:49??文本編輯器\文本編輯器\Debug\mt.dep
?????文件??????52224??2011-04-22?13:49??文本編輯器\文本編輯器\Debug\vc90.idb
?????文件??????61440??2011-04-22?13:49??文本編輯器\文本編輯器\Debug\vc90.pdb
?????文件?????525312??2011-04-22?13:49??文本編輯器\文本編輯器\Debug\文本編輯.exe
?????文件????????406??2011-04-22?13:49??文本編輯器\文本編輯器\Debug\文本編輯.exe.em
?????文件????????472??2011-04-22?13:49??文本編輯器\文本編輯器\Debug\文本編輯.exe.em
?????文件????????381??2011-04-22?13:49??文本編輯器\文本編輯器\Debug\文本編輯.exe.intermediate.manifest
?????文件????1144868??2011-04-22?13:49??文本編輯器\文本編輯器\Debug\文本編輯.ilk
?????文件??????65876??2011-04-22?13:49??文本編輯器\文本編輯器\Debug\文本編輯.obj
?????文件????2345984??2011-04-22?13:49??文本編輯器\文本編輯器\Debug\文本編輯.pdb
?????文件???????1201??2010-07-05?16:39??文本編輯器\文本編輯器\LineList.h
?????文件???????1707??2011-04-22?13:48??文本編輯器\文本編輯器\menu.h
?????文件???????5680??2010-07-08?13:40??文本編輯器\文本編輯器\rowlist.h
?????文件??????13517??2010-07-03?20:28??文本編輯器\文本編輯器\text.txt
?????文件???????1224??2010-06-30?15:52??文本編輯器\文本編輯器\UpgradeLog.xm
?????文件???????1589??2010-06-30?17:14??文本編輯器\文本編輯器\UpgradeLog2.xm
?????文件???????3868??2006-12-04?03:41??文本編輯器\文本編輯器\文本編輯.4.5.resharper.user
?????文件??????11259??2010-07-08?13:50??文本編輯器\文本編輯器\文本編輯.cpp
?????文件???????3427??2010-06-25?22:13??文本編輯器\文本編輯器\文本編輯.dsp
?????文件????????524??2010-06-25?23:24??文本編輯器\文本編輯器\文本編輯.dsw
?????文件?????470016??2011-04-22?13:49??文本編輯器\文本編輯器\文本編輯.ncb
?????文件??????49664??2010-07-02?13:54??文本編輯器\文本編輯器\文本編輯.opt
?????文件???????1346??2010-07-02?13:53??文本編輯器\文本編輯器\文本編輯.plg
?????文件???????1023??2010-07-01?16:16??文本編輯器\文本編輯器\文本編輯.sln
????..A..H.?????17408??2011-04-22?13:49??文本編輯器\文本編輯器\文本編輯.suo
?????文件???????4865??2010-06-28?23:37??文本編輯器\文本編輯器\文本編輯.vcproj
?????文件???????1415??2011-04-22?13:49??文本編輯器\文本編輯器\文本編輯.vcproj.chengc-PC.chengc.user
?????文件???????1405??2010-07-09?08:56??文本編輯器\文本編輯器\文本編輯.vcproj.Ipod.chengc.user
............此處省略10個(gè)文件信息
評(píng)論
共有 條評(píng)論