?? 簡單行編輯程序.txt
字號:
簡單行編輯程序
[問題描述]
文本編輯程序是利用計算機進行文字加工的基本軟件工具,實現(xiàn)對文本文件的插入、刪除等修改操作。限制這些操作以行為單位進行的編輯程序稱為行編輯程序。
被編輯的文本文件可能很大,全部讀入編輯程序的數(shù)據(jù)空間(內(nèi)存)的做法既不經(jīng)濟,也不總能實現(xiàn)。一種解決方法是逐段地編輯。任何時刻只把待編輯文件的一段放在內(nèi)存,稱為活區(qū)。試按照這種方法實現(xiàn)一個簡單的行編輯程序。設文件每行不超過320個字符,很少超過80字符。
[基本要求]
實現(xiàn)以下4條基本編輯命令:
(1) 行插入。格式:i<行號><回車><文本><回車>
將<文本>插入活區(qū)中第<行號>行之后
(2)行刪除。格式:d<行號1>[□<行號2>]<回車>
刪除活區(qū)中第<行號1>行(到第<行號2>行)。兩種格式的例子是:“d10↙”和“d10□14↙”
(3)活區(qū)切換。格式:n<回車>
將活區(qū)寫入輸出文件,并從輸入文件中讀入下一段,作為新的活區(qū)。
(4)活區(qū)顯示。格式:p<回車>
逐頁地(每頁20行)顯示活區(qū)內(nèi)容,每顯示一頁之后請用戶決定是否繼續(xù)顯示以后各頁(如果存在)。印出的每一行要前置以行號和一個空格符,行號固定占4位,增量為1。
各條命令中的行號均須在活區(qū)中各行行號范圍之內(nèi),只有插入命令的行號可以等于活區(qū)第一行行號減1,表示插入當前屏幕中第一行之前,否則命令參數(shù)非法。
[測試數(shù)據(jù)]
由學生依據(jù)軟件工程的測試技術自己確定。注意測試邊界數(shù)據(jù),如首行、尾行。
[實現(xiàn)提示]
(1) 設活區(qū)的大小用行數(shù)activemaxlen(可設為100)來描述。考慮到文本文件行長通常為正態(tài)分布,且峰值在60到70之間,用320×activemaxlen大小的字符數(shù)組實現(xiàn)存儲將造成大量浪費。可以以標準行塊為單位為各行分配存儲,每個標準行塊含81個字符。這些行塊可以組成一個數(shù)組,也可以利用動態(tài)鏈表連接起來。一行文字可能占多個行塊。行尾可用一個特殊的ASCII字符(如(012)8)標識。此外,還應記住活區(qū)起始行號。行插入將引起隨后各行行號的順序下推。
(2) 初始化過程包括:請用戶提供輸入文件名(空串表示無輸入文件)和輸出文件名,兩者不能相同。然后盡可能多地從輸入文件中讀入各行,但不超過activemaxlen-x。x的值可以自定,例如20。
(3) 在執(zhí)行行插入命令的過程中,每接收到一行時到要檢查活區(qū)大小是否已達activemaxlen。如果是,則為了在插入這一行之后仍保持活區(qū)大小不超過activemaxlen,應將插入點之前的活區(qū)部分中第一行輸出到輸出文件中;若插入點為第一行之前,則只得將新插入的這一行輸出。
(4) 若輸入文件尚未讀完,活區(qū)切換命令可將原活區(qū)中最后幾行留在活區(qū)頂部,以保持閱讀連續(xù)性;否則,它意味著結束編輯或開始編輯另一個文件。
(5) 可令前三條命令執(zhí)行后自動調(diào)用活區(qū)顯示。
[選作內(nèi)容]
(1) 對于命令格式非法等一切錯誤作嚴格檢查和適當處理。
(2) 加入更復雜的編輯操作,如對某行進行串替換;在活區(qū)內(nèi)進行模式匹配等,格式可以為S<行號>@<串1>@<串2><回車>和m<串><回車>。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -