freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

c語言課程設(shè)計c語言文本編輯器-文庫吧資料

2025-07-01 06:24本頁面
  

【正文】 p=pnext。 if(q==NULL) return 1。im。 q=Hhead。 node *p。 /*若第m行,第n列的字符為常規(guī)字符,則返回該字符*/ else return 0。amp。 if(pch==13) return 1。in。 p=qnext。im。 q=Hhead。 Hnode *q。/*下行移至上行的最后一個元素,指針置空*/ } return flag。 /*若為回車,跳出循環(huán)*/ } qnext=p2。 /*p1指向p2的前一個節(jié)點,p2指向行單鏈表中下一個節(jié)點*/ p2=p2next。i76num。 q1next=p1。 /*tail的指針域指向下一行的第一個元素的地址*/ } else /*若當前行的字符個數(shù)為0,即刪除該字符后,只剩下回車符,則將下一個行單鏈表中節(jié)點的數(shù)據(jù)域移至前一下節(jié)點的數(shù)據(jù)域*/ { q=qnextl。 /*指向下一行的元素的地址*/ p1=p2=qnext。 tail=p1。 q1=q。 /*在單鏈表中刪除第m行第n列的元素*/ free(p2)。 free(p1)。 p2=p1next。in1。 p1=qnext。im。/*移至第m1行,第76列*/ flag=1。 m=m1。amp。m==1) return。 if(n==0amp。 int i,num=0,j,flag=0。 int del(Hnode *Hhead,int m,int n) /*del():刪除第m行,第n列位置的字符*/ { Hnode *q,*q1。下面介紹另外兩個對字符進行檢測的函數(shù),它在字符的刪除、插入等許多操作中都有用到。 /*逐行逐列顯示文本字符*/ }程序調(diào)用del(Honde*Hhead,int m,int n)函數(shù)來完成刪除第行、第列位置的字符。q!=NULL) gotoxy(1,wherey()+1)。 /*指向下一個節(jié)點*/ if((pch==13||pch==1)amp。/*在文本窗口中輸出該字符*/ p=pnext。amp。amp。amp。amp。 /*清屏*/ /*雙重循環(huán),讀取并顯示保存在單鏈表中字符*/ do{ p=qnext。 }void view(Hnode *q) /*按行顯示保存在單鏈表中的文本字符,q為指向行單鏈表中第一個節(jié)點的指針*/ { node *p。 /*插入24個空行*/ window(3,3,78,23)。i24。 textbackground(9)。 drawmain()。 getch()。 /*指向下一個節(jié)點*/ printf(\n)。 /*輸出各行中的字符到預(yù)覽窗口*/ p=pnext。)。 /*每行開頭,打印此字符,不管前面是否有回車符*/ while(p!=NULL) /*循環(huán)讀取單鏈表p中的值*/ { if(pch==13) putch(39。 /*清屏*/ /*循環(huán)讀取兩個單鏈表中的值:q是一個指向行單鏈表首節(jié)點的指針, 此單鏈表數(shù)據(jù)域的值為實際保存各行字符的列單鏈表p中的首節(jié)點地址*/ do{ p=qnext。 window(1,1,80,25)。 /*view()函數(shù)聲明*/ node *p。(2) 通過view(honde*q)函數(shù),可實現(xiàn)文本字符在編輯區(qū)域的顯示。 }文本字符顯示輸出模塊的作用是通過循環(huán)讀取各單鏈表,醬爆錯在單鏈表眾多的字符在文本編輯區(qū)中顯示輸出。 gotoxy(68,25)。 /*跳至窗口底端*/ textcolor(1)。 cprintf(%c %c Help %c %c,179,17,179)。 cprintf(%c %c Edit %c %c,179,17,179)。 cprintf(%c %c File %c %c,179,17,179)。 cprintf(%c,196)。 cprintf(%c,196)。 cprintf(%c,196)。 cprintf(%c,196)。 /*在第25行,第2列開始*/ cprintf(%c,196)。 /*在第2行,第2列開始*/ cprintf(%c,196)。i=79。 cprintf(%c,196)。 /*(x,y)中x不變,y++*/ cprintf(%c,196)。i=24。 /*在文本模式中選擇新的字符顏色0為BLACK黑*/ insline()。 /*在文本窗口中設(shè)置光標至(1,1)處*/ textbackground(7)。void drawmain() /*畫主窗口函數(shù)*/ { int i,j。/*由此類型節(jié)點構(gòu)成的單鏈表,命名為:行單鏈表*/繪制文本編輯器主窗口由drawmain()函數(shù)來完成,通過準確定位相關(guān)輸出對象的坐標來完成主窗口的繪制。 /*指向列單鏈表的首節(jié)點的地址*/ struct Hnode *nextl。 /*指針域:指向下一個結(jié)點的指針*/ }node。 /*定義一個有500個元素的結(jié)構(gòu)體數(shù)組,保存選定的文本字符的屬性*/typedef struct node /*定義保存行中的單個字符的結(jié)構(gòu)*/ { char ch。 /*x軸和y軸坐標*/ }record。/*value保存有值數(shù)組元素的最大下標值,backup保存value的副本,NUM保存當前行中的用戶輸入的字符個數(shù)*/typedef struct record { char ch。.4程序?qū)崿F(xiàn). 源碼分析程序預(yù)處理包括頭文件的加載,以及結(jié)構(gòu)體,常量和全局變量的定義。15)opens()函數(shù)原型:void opens(Hnode*Hp)opens()函數(shù)用于從任意文本文件中讀取文件內(nèi)容,保存至行單鏈表形式的數(shù)據(jù)結(jié)構(gòu)中。13)save()函數(shù)原型:void save(Hnode*head)save()函數(shù)用于將head所指的行單鏈表中所指的各個列單鏈表中的數(shù)據(jù)域的值寫入文件,文件路徑和文件名由用戶指定。11)drawmenu()函數(shù)原型:void drawmenu(int m,int n)drawmenu函數(shù)用于畫菜單,m表示第幾項菜單,n表示第m項的第n個子菜單項。9)control()函數(shù)原型:void control(int A,Hnode*Hhead)control()函數(shù)用于對左移鍵(右移鍵)進行響應(yīng),A為按鍵的整數(shù)值,Hhead為行單鏈表的首地址。7)test()函數(shù)原型:int test(Hnode*Hhead,int n)test()函數(shù)用于執(zhí)行后,檢驗第n行及后面的數(shù)據(jù),使其滿足每行不多于76個字符的規(guī)則。4)check()函數(shù)原型:int check(Hnode*Hhead,int m,int n)函數(shù)用于在單鏈表中檢查第m行,第n列位置的字符,若為常規(guī)字符,則返回該字符;否則返回0或1.5)judge()函數(shù)原型:int judje(Hnode*Hhead,int m)judge()函數(shù)用于返回第m行中不包括回車符在內(nèi)的常規(guī)字符的個數(shù)。q為指向行單鏈表中第一個節(jié)點的指針。.1)drawmain()函數(shù)原型:void drawmain()drawmain()函數(shù)用于在程序中會只包括菜單欄,編輯區(qū)和狀態(tài)欄在內(nèi)的主窗口。4. 全局變量及數(shù)組int value,backup,NUM:value保存有值數(shù)組元素的最大下標值,backup保存value的副本,NUM保存當前行中用戶輸入的字符個數(shù)。node *next:數(shù)據(jù)域。Hnode結(jié)構(gòu)體定義了在一個單鏈表中保存列單鏈表首節(jié)點地址的結(jié)構(gòu),我們稱由Hnode類型的節(jié)點構(gòu)成的單鏈表為行單鏈表。struct Hnode *next1。struct node*next:指針域,指向列單鏈表中的下一個節(jié)點。結(jié)構(gòu)體中各字段表示的意義如下。}node。2. 與列單鏈表相關(guān)的node結(jié)構(gòu)體typedef struct node{char ch。char ch:保存一個選定的文本字符。record結(jié)構(gòu)體表示一個字符所具有的屬性,當用戶使用相關(guān)按鍵選定文本后,選定的文本保存在record結(jié)構(gòu)體類型的數(shù)組中。int col,line。下面分別介紹這3個結(jié)構(gòu)體及幾個全局變量。它主要利用文本窗口的gotoxy()函數(shù)和cprintf()函數(shù)來實現(xiàn),這里需要對文本窗口的坐標進行仔細設(shè)計。主窗口主要由菜單欄、文本編輯區(qū)和狀態(tài)欄3大部分構(gòu)成。6.幫助及其他模塊幫助模塊主要用于提示用戶如何使用本軟件,它的實現(xiàn)非常簡單。選取不同菜單選項后,a的值不同。3) 選取菜單當用戶將光帶選擇條置于某個菜單選項上時,可按Enter鍵來選取該菜單選項。若為右移鍵,則調(diào)用drawmenu(++value,flag)函數(shù)。(1) 若為左移鍵,則調(diào)用drawmenu(value,flag)函數(shù),將切換至某個菜單的左邊鄰居菜單。(4) 根據(jù)t的值,用不同的前景色和背景色在原來的位置重新顯示菜單選項,以達到光帶條的效果。(2) 然后繪制菜單的邊框及菜單選項值。m的取值為0、下面簡要描述一下draw(value,flag)函數(shù)的過程。在menuctrl()函數(shù)中,會根據(jù)功能鍵的鍵值調(diào)用drawmenu(value,flag)函數(shù),參數(shù)value、flag都為局部變量,分別用來保存調(diào)用某個菜單、某個菜單下的第幾個菜單選項。1) 顯示菜單用戶可按FF2和F3功能鍵來分別調(diào)用File、Edit和Help菜單,即完成菜單的顯示。5.菜單控制模塊在菜單控制模塊中,主要完成菜單的顯示、光帶條在子菜單之間的上下移動或菜單之間的左右移動以及子菜單項的選項工作。(2) 保存當前位置的坐標,利用循環(huán)語句,依次利用x[0]至x[backup1]數(shù)組元素保存已選定字符的坐標和字符值,調(diào)用insert()函數(shù)在單鏈表中一次插入一個字符。這一操作必須在剪切或復(fù)制操作之后出現(xiàn)。(3) 重新在文本編輯器中顯示單鏈表中保存的所有字符,并將光標置位到原來的位置。3)復(fù)制用戶可按Ctrl+C鍵或通過Edit菜單選項來復(fù)制選定的文本,復(fù)制操作的實現(xiàn)比剪切操作簡單,它的實現(xiàn)過程如下:(1) 保存當前位置的坐標。(3)利用全局變量backup保存value的值后,將value賦值為0。它的實現(xiàn)過程如下:(1)若全局變量value的值大于0(大于0表示已經(jīng)有文本選定),則執(zhí)行下面操作。(2) 當前光標所在位置的字符的x坐標、y坐標和字符值保存在數(shù)組元素r[value]中value從0開始,若按減為Ctrl+,value值在原來基礎(chǔ)上每次加1;若按鍵為Ctrl+,value值在原來基礎(chǔ)上每次減1.(3) 調(diào)用Colorview()函數(shù),用不同的顏色來顯示已經(jīng)選定的當前文本,以達到突出選定文本的效果。在介紹選定文本的實現(xiàn)過程之前,先簡要介紹一個全局的結(jié)構(gòu)數(shù)組r[],它的元素的類型為record結(jié)構(gòu)體類型,每一個元素可保存一個字符的x坐標、y坐標和字符值。下面分別介紹文本的選定和對選定文本的剪切、復(fù)制和粘貼操作的具體實現(xiàn)。例如,如果當前光標在第m行第1列,且按下了光標左移鍵,只需將光標移至第m1行,第76列。(5) 調(diào)用m++語句,是變量m增1,跳至步驟(3),開始對下一行進行處理。(3) 用tail保存第m行相應(yīng)列單鏈表中最后一個節(jié)點的地址,并將最后一個節(jié)點的指針域保存為第m+1行中相應(yīng)列單鏈表的第一個元素的地址。(1) 在相應(yīng)的列單鏈表中刪除第n個節(jié)點。3) 刪除字符當用戶按下Del鍵時,系統(tǒng)會調(diào)用del()函數(shù)在單鏈表中刪除當前光標所在處的字符;當用戶按下BackSpace鍵時,系統(tǒng)也會調(diào)用這個函數(shù)在單鏈表中刪除當前光標所在處前一個位置的字符
點擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1