本文的示例共享了用於c語言實現簡單文本編輯器的具體代碼。 具體內容如下
期待有三個功能。 首先,可以在指定的行中輸入字符串。 第二,刪除指定行的字符串;第三,顯示編輯器的行數和內容。
我們用區塊鏈結構實現本程序。 “塊”的意思是每個塊都可以包含數字字符,“鏈”的意思是塊和塊之間通過鏈表結構連接。
ide : code :3360 blocks 17.12
Compiler : GNU GCC Compiler
/*通過區塊鏈結構實現簡單的文本編輯器
*#包含
#包含
#define MAX 100
void Init (; //初始化編輯器
void input (; //輸入指定的行,#號結束
void Delline (; //刪除指定的行
語音列表(; //顯示文本編輯器的內容
int Menu (; //列出並選擇選擇菜單
//定義存儲字符串的節點、區塊鏈結構
類型定義結構節點{
char data[50];
結構節點*下一步;
}strnode;
//為每個行首節點定義
類型結構頭{
Int編號器; //行號
int length; //字符串長度
strnode * next;
}headnode;
//定義有100行
頭節點頭[ max ];
//函數Init ) )實現每個行首節點的初始化
void Init ()。
int i;
for(I=0; I
Head[i].length=0;
}
}
//函數Menu ) )實現選擇菜單
int Menu ()。
int i;
i=0;
printf--------\n ';
printf(1.input(n );
printf(2.delete(n ) );
printf(3.list(n );
printf(4.exit(n );
printf--------\n ';
wile(I=0||I4 ) {
printf(pleasechoose(n );
掃描(' % d ',I );
}
返回I;
}
//函數input ),在指定的行中輸入字符串
Void輸入(}
strnode * p;
int i,j,LineNum;
char ch;
wile(1) {
j=-1;
printf (inputthenumberofline (0~ 100 )、101-exit:(n );
掃描(' % d ',LineNum ); //輸入要寫入的行號
if(Linenum0|||Linenum=max ) {
返回;
}
printf(pleaseinput,#-end\n );
i=LineNum;
Head[i].number=LineNum;
head[I].next=(strnode* ) malloc ) sizeof ) strnode );
p=Head[i].next;
p-next=空值;
ch=getchar (;
威爾(ch!='# ' ) {
j;
如果if(j=50 )//字符串的長度超過50,則必須分配另一個節點空間
p-next=(strnode* ) malloc ) sizeof (str node );
p-next-next=空;
p=p-next; //p指向新分配的節點
}
p-data[jP]=ch; //將輸入的文字放入data
ch=getchar (;
}
Head[i].length=j 1; //行的長度,以字符為單位
}
}
//函數Delline ) )實現指定行的刪除
void Delline () }
strnode * p,*q;
int i,LineNum;
wile(1) {
printf (inputthenumberoflinewhichdoyouwanttodelete (0至100 ),101-exit:(n ) );
掃描(' % d ',LineNum ); //輸入要刪除的行號
if(Linenum0|||Linenum=max ) {
返回;
}
i=LineNum;
p=Head[i].next;
if(head(I ).length0) ) )。
while(p!=空) {
q=p-next;
free(p;
p=q;
}
Head[i].length=0;
Head[i].number=0;
}
}
}
//函數List ) )在畫麵上顯示輸入的內容
voidlist(} ()
strnode *p;
int i,j,m,n;
for(I=0; I
if(head(I ).length0) ) )。
printf(line%d ),Head[i].number );
n=Head[i].length;
m=1;
p=Head[i].next;
for(j=0; Jj
以if(j=50*m )//50為基準,超過一個時指向下一個節點
p=p-next;
m; //節點數
}else{
printf('%c ',p-data[jP] ); //輸出節點內的內容
}
}
printf((n );
}
}
printf((n );
}
int main () )
{
int sel;
Init (; //初始化編輯器
wile(1) {
sel=Menu (;
選擇sitch(sel )//輸入的數字
case 1:
input (;
布雷克;
case 2:
戴爾line (;
布雷克;
case 3:
List (;
布雷克;
case 4:
退出(0;
}
}
返回0;
}
測試結果如下。
希望以上是正文的全部內容,對大家的學習有幫助。 另外,我希望你支持很多編劇。